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 サイトの他の関連記事を参照してください。