Я перегрузил >>
для моего класса myString. Но когда я использую cin >> temp
, и после этого я использую другой cin для строки, кажется, что другие cin s не работают, как раньше. Если вы посмотрите на мой код, я имею в виду, что программа не понимает y или n в конце и всегда находится в цикле while.перегрузка istream
это IStream функция (друг для класса MyString)
std::istream &operator>> (std::istream& input, myString& str) {
char* temp = new char [1000];
input >> temp;
int i=0;
int pow2=1;
for (i; temp[i]!=NULL; i++) {
while(pow2<=i)
pow2 *= 2;
}
delete [] str.string_;
str.length = i;
str.capacity = pow2;
str.string_ = new char [pow2];
for (int i=0; i<str.length; i++)
str.string_[i] = temp[i];
delete [] temp;
return input;
}
Это главный
cout << "myString Program" << endl;
while(1) { //simple again or not while
myString c;
cin >> c;
cout << c;
string input;
cout << "\nCountine (y/n)?";
getline(cin, input);
if (input[0] == 'n' || input[0] == 'N')
break;
}
«не работает «может означать много чего. Пожалуйста, предоставьте больше информации! – Nbr44
Если вы всегда будете устанавливать размер 'temp' на 1000, зачем динамически выделять его в первую очередь? – chris
Вы прошли через свой код в отладчике? Видно, что он читает все, что нужно, в вашем операторе ввода? Видите, что вводится с вызовом 'getline'? –