getlineを使用して、プログラムの入力をループで読み取っています。
string temp(STR_SIZE, ' ');
string str_num(STR_SIZE, ' ');
...
getline(cin, temp, '\n');
その後、関数を使用して次の区切り文字(空白)を見つけ、空白の前のすべての文字をstr_numに割り当てます。次のようになります。
str_num.assign(temp, 0, next_white_space(0));
これがうまく機能することを確認しました。私のソリューションの次のステップは、str_numをintに変換することです(この部分もうまく機能します)が、str_numの各文字が数字であることを確認する必要があります。これが私が試した中で最高のものです:
if(!isdigit(str_num[0] - '0')) {
cout << "Error: Not an appropriate value\n";
break; /* Leave control structure */
}
何らかの理由で、これは常にエラーメッセージを出力し、構造を終了します。何故ですか?以前、文字列オブジェクトにoperator []を使用しましたが、うまく機能しているようです。しかし、ここでは、それは完全に私を台無しにしています。
ありがとう。