Maison >développement back-end >C++ >Pourquoi `atof` ne parvient-il pas à convertir `std::string` en `double` dans Qt, et quelles sont les alternatives ?
std::string en double problème de conversion : utilisation d'atof avec des projets Qt
Conversion d'un std::string en double à l'aide de atof la fonction peut être problématique dans les projets Qt. Examinons le code et explorons des approches alternatives :
Le code fourni :
std::string num = "0.6"; double temp = (double)atof(num.c_str());
tente de convertir un std::string en double. Cependant, il renvoie zéro. Ce problème survient car les QStrings, couramment utilisées dans Qt, sont transmises en tant que const char*.
Pour résoudre ce problème, convertissez explicitement la QString en double :
QString winOpacity("0.6"); double temp = winOpacity.toDouble();
Alternativement, QByteArray::toDouble peut être utilisé pour des conversions plus rapides lorsque vous travaillez avec const char*.
Pour les projets non-Qt, la syntaxe suivante est valid :
std::string num = "0.6"; double temp = ::atof(num.c_str());
Bien que stringstream ou boost::lexical_cast puissent également effectuer la conversion, ils encourent une pénalité de performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!