C++ 过载操作员>&燃气轮机;在自制课堂上';字符串';C++;

C++ 过载操作员>&燃气轮机;在自制课堂上';字符串';C++;,c++,class,overloading,operator-keyword,C++,Class,Overloading,Operator Keyword,我正在创建类“String” 但是我遇到了运算符>>重载的问题 我试着这样做: istream& operator >> (istream& input, String& inputStr) { char str[] = ""; input >> str; inputStr.size = strlen(str); inputStr.str = new char[inputStr.size]; for (int

我正在创建类“String”

但是我遇到了运算符>>重载的问题

我试着这样做:

istream& operator >> (istream& input, String& inputStr)
{
    char str[] = "";
    input >> str;
    inputStr.size = strlen(str);
    inputStr.str = new char[inputStr.size];
    for (int i = 0; i < inputStr.size; i++)
    {
        inputStr.str[i] = str[i];
    }
return input;
}
istream&operator>>(istream&input、String&inputStr)
{
字符str[]=“”;
输入>>str;
inputStr.size=strlen(str);
inputStr.str=新字符[inputStr.size];
对于(int i=0;i
但它不起作用=(

你能帮我让这个接线员超负荷工作吗

下面是一个代码:

#pragma once
#include<iostream>

using namespace std;


class String
{
private:
    int size;
    char* str;

public:
    String();
    ~String();
    String(char* arr);
    String(const String& copy);
    int sizeStr();
    friend ostream& operator << (ostream& output, const String& outputStr);
    friend istream& operator >> (istream& input, String& inputStr);
};

String::String()
{
    this->size = 0;
    this->str = nullptr;
}

String::String(char* str)
{
    this->size = strlen(str);
    this->str = new char[size];

    for (int i = 0; i < size; i++)
    {
        this->str[i] = str[i];
    }
}

String::~String()
{
    delete[] str;
}

String::String(const String& copy)
{
    if (this != &copy)
    {
        this->size = copy.size;

        this->str = new char[size];

        for (int i = 0; i < size; i++)
        {
            this->str[i] = copy.str[i];
        }
    }
}

int String::sizeStr()
{
    return this->size;
}

ostream& operator << (ostream& output, const String& outputStr)
{
    for (int i = 0; i < outputStr.size; i++)
    {
        output << outputStr.str[i];
    }

    return output;
}

istream& operator >> (istream& input, String& inputStr)
{


    return input;
}
#pragma一次
#包括
使用名称空间std;
类字符串
{
私人:
整数大小;
char*str;
公众:
字符串();
~String();
字符串(char*arr);
字符串(常量字符串和副本);
int-sizest();
friend ostream&operator>(istream&input、String&inputStr);
};
String::String()
{
这个->大小=0;
这->str=nullptr;
}
字符串::字符串(char*str)
{
此->大小=strlen(str);
此->str=新字符[大小];
对于(int i=0;istr[i]=str[i];
}
}
字符串::~String()
{
删除[]str;
}
字符串::字符串(常量字符串和副本)
{
如果(此!=&复制)
{
此->大小=copy.size;
此->str=新字符[大小];
对于(int i=0;istr[i]=copy.str[i];
}
}
}
int字符串::sizeStr()
{
返回此->大小;
}
ostream和运算符(istream和input、String和inputStr)
{
返回输入;
}

我期待您的帮助。

char str[]=”;
为您提供一个由一个字符组成的数组。它不会自动调整大小。因此,我需要做什么?在您使用的语言中,似乎已经有一个强大的内置字符串类型
char[]
。它显然可以根据需要调整自身大小并管理自己的内存。为什么要创建一个类?我不能使用标准字符串。这是此任务的一个条件。这是一个非常有趣的问题。您不知道字符串提前有多大,所以无法预先确定缓冲区的大小。看起来您必须猜测缓冲区的合理大小并读取into一个字符一个字符地调整缓冲区,直到找到空白分隔符,并在缓冲区填满时调整其大小。