簡単な質問があります。カスタムStringクラスの演算子>>をオーバーライドする必要がありますが、その方法がわかりません。
このコードが機能することはわかっています。これは、問題を解決するための私の最初の方法だったからです。
istream& operator>>(istream &is, String &s) {
char data[ String::BUFF_INC ]; //BUFF_INC is predefined
is >> data;
delete &s;
s = data;
return s;
}
ただし、仕様(これは宿題です)によると、空白を手動でチェックし、文字列がdata []に対して大きすぎないことを確認するために、一度に1文字ずつ読み取る必要があります。そこで、コードを次のように変更しました。
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()以外のものを使用する必要がありますか?