ホームページ >バックエンド開発 >C++ >Qt で「atof」が「std::string」から「double」への変換に失敗する理由とその代替手段は何ですか?

Qt で「atof」が「std::string」から「double」への変換に失敗する理由とその代替手段は何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-03 19:02:10172ブラウズ

Why Does `atof` Fail to Convert `std::string` to `double` in Qt, and What Are the Alternatives?

std::string から Double への変換の問題: Qt プロジェクトで atof を使用する

atof を使用して std::string を double に変換するQt プロジェクトでは関数に問題が生じる可能性があります。コードを調べて、別のアプローチを検討してみましょう。

提供されたコード:

std::string num = "0.6";
double temp = (double)atof(num.c_str());

は、std::string を double に変換しようとします。ただし、ゼロが返されます。この問題は、Qt で一般的に使用される QString が const char* として渡されるために発生します。

これを解決するには、QString を明示的に double にキャストします。

QString winOpacity("0.6");
double temp = winOpacity.toDouble();

または、QByteArray::toDouble const char* を使用する場合、変換を高速化するために使用できます。

Qt 以外の場合

std::string num = "0.6";
double temp = ::atof(num.c_str());

stringstream または boost::lexical_cast も変換を実行できますが、パフォーマンスが低下します。

以上がQt で「atof」が「std::string」から「double」への変換に失敗する理由とその代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。