atofまたは_wtofが文字列をdoubleに変換できないかどうかを検出する方法?しかし、私の入力を0.0にすることができるので結果が0.0かどうかを調べることではありません。ありがとう!atofまたは_wtofが失敗したかどうかを検出するにはどうすればよいですか?
7
A
答えて
11
atof
を使用しないでください。 e
ポイントに最後に消費キャラクター過去1にポインタを
// assume: "char * mystr" is a null-terminated string
char * e;
errno = 0;
double x = std::strtod(mystring, &e);
if (*e != '\0' || // error, we didn't consume the entire string
errno != 0) // error, overflow or underflow
{
// fail
}
:代わりに、<cstdlib>
から、strtod
を使用し、また<cerrno>
からerrno
を確認してください。 e == mystr
をチェックして、のいずれかがの文字を消費しているかどうかを確認することもできます。
wchar_t
ストリングを扱うためのstd::wcstod
もあります(<cwstring>
)。 C++ 11では
外部データを扱う際に望ましい故障モードではない可能性がある、あなたも<string>
から、std::to_string
/std::to_wstring
がありますが、私は、変換が失敗した場合には、例外がスローされますと信じています。
+0
@TerranceCohen:いいえ(でも、 "errno"をチェックして、オーバーフローとアンダーフローをキャッチすることができます)。 –
1
atof
を使用することはできません。しかし、これはC++なのでstd::stringstream
を使用し、でoperator >>
をdouble
に適用した後にチェックすることをお勧めします。
関連する問題
- 1. bashのread文で失敗したサブプロセスを検出するにはどうすればよいですか?
- 2. ユーザーがスペースバーに入ったかどうかを検出するにはどうすればよいですか?
- 3. エラーロギングが失敗した場合はどうすればよいのですか?
- 4. 治具内でテストが失敗したかどうかを検出します。
- 5. Jetty:Webappが起動に失敗したかどうかを検出します。
- 6. 子アクティビティから戻ったかどうかを検出するにはどうすればよいですか?
- 7. 私の.apkをインストールしたユーザーが失敗したかどうか、どうすればわかりますか?
- 8. Catel:SavableModelBase.Loadが失敗したときはどうすればわかりますか?
- 9. Laravelが失敗したジョブをうまくデコードするにはどうすればいいですか?JSON
- 10. データの検証に外部サービスが失敗した場合はどうすればよいですか?
- 11. 最初のアプリ起動の検出に失敗しました。どうすればいいですか?
- 12. ユーザがipadまたはマシンを使用してウェブサイトにアクセスしたかどうかを検出するにはどうすればよいですか?
- 13. "system(cmd)"から実行されたコマンドが失敗したかどうかをC++コードに知らせるにはどうすればよいですか?
- 14. DownloadStringが失敗したかどうかを検出する方法?
- 15. 「失敗」メッセージを返すように検索するにはどうすればよいですか?
- 16. dlibのcorrelation_trackerがターゲットイメージを失った場所を検出するにはどうすればよいですか?
- 17. アプリケーションがドキュメントベースであるかどうかを検出するにはどうすればよいですか?
- 18. デバイスがアンドロイドウェアであるかどうかを検出するにはどうすればよいですか?
- 19. スクリプトマネージャーがページにあるかどうかを検出するにはどうすればよいですか?
- 20. タッチイベントがEditText内にあるかどうかを検出するにはどうすればよいですか?
- 21. ファイルがネットワーク上にあるかどうかを検出するにはどうすればよいですか?
- 22. PythonでgRPCサーバーバインドの失敗を検出するにはどうすればよいですか?
- 23. デバイスがルート(Android)かjailbroken(iOS)かどうかを検出するにはどうすればよいですか?
- 24. MacでRetinaディスプレイがJavaから検出されたかどうかを検出するにはどうすればよいですか?
- 25. テストが失敗したときにMavenゴールを実行するにはどうすればよいですか?
- 26. タスクが失敗した場合にAntコマンドを実行するにはどうすればよいですか?
- 27. ユニットテストが失敗したときに通知を送信するにはどうすればよいですか?
- 28. WAVファイルに44または46バイトのヘッダーが含まれているかどうかを検出するにはどうすればよいですか?
- 29. 失敗したjQueryリクエストから例外メッセージを取得するにはどうすればよいですか?
- 30. タイプがstd :: tupleかどうかを検出するにはどうすればよいですか?
atoX機能を使用するのが悪い理由を知りました。 – PlasmaHH