以下是逐字说明:
字符串插入/提取运算符(<< 和 >>)需要在 MyString 对象中重载。这些运算符还需要能够进行级联操作(即,cout << String1 << String2 或 cin >> String1 >> String2)。字符串插入运算符 (>>) 将读取以行尾字符 (\n) 或 256 个字符长结尾的整行字符。超过 256 个字符的输入行将仅限于前 256 个字符。
有了这个,这是我到目前为止得到的代码:
在我的 .cpp 文件中:
istream& MyString::operator>>(istream& input, MyString& rhs)
{
char* temp;
int size(256);
temp = new char[size];
input.get(temp,size);
rhs = MyString(temp);
delete [] temp;
return input;
}
在我的 .h 文件中:
istream& 运算符>>(istream& 输入, MyString& rhs);
从 main.cpp 文件调用:
MyString String1;
const MyString ConstString("Target string"); //Test of alternate constructor
MyString SearchString; //Test of default constructor that should set "Hello World"
MyString TargetString (String1); //Test of copy constructor
cout << "Please enter two strings. ";
cout << "Each string needs to be shorter than 256 characters or terminated by
/.\n" << endl;
cout << "The first string will be searched to see whether it contains exactly the second string. " << endl;
cin >> SearchString >> TargetString; // Test of cascaded string-extraction operator<<
我得到的错误是:istream& MyString::operator>>(std::istream&, MyString&)â 必须只接受一个参数
我该如何纠正?我对如何在没有 rhs 和输入的情况下做到这一点感到非常困惑