В данном разделе приведены инструкции стенографические: операторыперегрузкой каскадные вставки оператора
вставки строк/извлечения (< < и >>) должны быть перегружены в пределах объекта MyString. Эти операторы также должны быть способны к каскадным операциям (т. Е. Cout < < String1 < < Строка2 или 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 :: оператор >> (станд :: IStream &, MyString &) â должен принимать ровно один аргумент
Как это исправить? Я очень запутался в том, как это сделать без BOTH и их ввода
Это «оператор извлечения потока». – chris
На самом деле это оператор смены вправо, но потоки используют его как так называемый «оператор извлечения» –
@SethCarnegie, правда, я сравнивал его с использованием «оператора вставки» – chris