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中文網其他相關文章!