指示は逐語的に次のとおりです。
文字列挿入/抽出演算子 (<< および >>) は、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& operator>>(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&)â は正確に 1 つの引数を取る必要があります
どうすればこれを修正できますか? rhsと入力の両方なしでこれを行う方法について非常に混乱しています