std::string kepada Double Conversion Isu: Menggunakan atof dengan Qt Projects
Menukar std::string kepada double menggunakan atof fungsi boleh menjadi masalah dalam projek Qt. Mari kita periksa kod dan teroka pendekatan alternatif:
Kod yang disediakan:
std::string num = "0.6"; double temp = (double)atof(num.c_str());
cuba menukar std::string kepada double. Walau bagaimanapun, ia mengembalikan sifar. Isu ini timbul kerana QString, yang biasa digunakan dalam Qt, diluluskan sebagai const char*.
Untuk menyelesaikannya, hantar QString secara eksplisit kepada menggandakan:
QString winOpacity("0.6"); double temp = winOpacity.toDouble();
Sebagai alternatif, QByteArray::toDouble boleh digunakan untuk penukaran yang lebih pantas apabila bekerja dengan const char*.
Untuk projek bukan Qt, sintaks berikut adalah sah:
std::string num = "0.6"; double temp = ::atof(num.c_str());
Walaupun aliran rentetan atau boost::lexical_cast juga boleh melakukan penukaran, mereka dikenakan penalti prestasi.
Atas ialah kandungan terperinci Mengapakah `atof` Gagal Menukar `std::string` kepada `double` dalam Qt, dan Apakah Alternatifnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!