重複の可能性:
C++ で文字列を int に解析する方法は?
C++03 で string を int に変換する方法は多数あります。これまでに見つけた最高のものはこれです:
string text;
cin>>text;
int converted;
if ( !(istringstream(text) >> converted) ){
cout<<"conversion failed\n";
}
cout<<"the converted string is "<<converted;
このソリューションの問題点は、「12monkeys」を受け入れて、躊躇なく 12 に変換することです。この場合、これを確認して「変換に失敗しました」と出力する簡単な方法はありますか?
atoi()、atol()、および strtol() を試してみましたが、失敗した場合に 0 を返すという事実は無駄です。文字列が「0」ではないかどうかを知るにはどうすればよいですか? 範囲チェックもありません (strtol() を除く)。「12monkeys」の問題は言うまでもなく、そこにも存在します。