我只是有一个简单的问题。我需要为自定义 String 类覆盖运算符 >> ,但我不知道该怎么做。
我知道这段代码有效,因为这是我解决问题的原始方法:
istream& operator>>(istream &is, String &s) {
char data[ String::BUFF_INC ]; //BUFF_INC is predefined
is >> data;
delete &s;
s = data;
return s;
}
但是,根据规范(这是一项家庭作业),我需要一次读取字符 1 以手动检查空格并确保字符串对于 data[] 来说不会太大。因此,我将代码更改为以下内容:
istream& operator>>(istream &is, String &s) {
char data[ String::BUFF_INC ];
int idx = 0;
data[ 0 ] = is.get();
while( (data[ idx ] != *String::WHITESPACE) && !is.ios::fail() ) {
++idx;
is.get();
data[ idx ] = s[ idx ];
}
return is;
}
但是,当执行此新代码时,它只会卡在用户输入循环中。那么如何使用 is.get() 逐字符读取数据而不等待更多用户输入?或者我应该使用 .get() 以外的东西吗?