入力の有効性を確認しようとしています。最初の列は文字列、2 番目の列は int です。セパレータは任意の数のスペースです。問題は、2 番目の項目が本当に int であるかどうかを適切に確認する方法がわからないことです。次のコードを検討してください。
string line; // parameter with a string to be parsed
string name;
int num;
istringstream lineStream(line);
lineStream >> name;
lineStream >> num;
を呼び出すlineStream.good()
と、「abcd g」などの入力を検出できますが、「abcd 12a」のようなものを入れると、「abcd」と 12 に解析されます。「abcd 12.2」なども同様です。
Java ではString.split()
、配列を使用して、文字を無視せずに各要素全体を解析できますが、ここで正しいアプローチが何であるかはわかりません。
ヒントをありがとう