我想读取“ .text”文件并将字符串转换为双精度。在调试模式下,我可以读取文本为99,03,但是在运行模式下,我只能读取99。我的转换代码如下
double a = std::stod(text)
答案 0 :(得分:2)
std::stod
受语言环境的影响。
#include <iostream>
#include <string>
#include <clocale>
int main(void){
std::setlocale(LC_ALL, "C");
std::string s{"99.03"};
double d = std::stod( s );
std::cout<< d << "\n";
std::setlocale(LC_ALL, "de_DE.UTF-8"); // A locale installed on your machine.
std::string s2{"99,03"};
double d2 = std::stod( s2 );
std::cout<< d2 << "\n";
}
您可能会得到如下结果:(在msvc和gcc 9.3.0上测试)
99.03
99.03
如果您还希望std::cout
将逗号打印为小数分隔符,则需要imbue
。您可以参考this post。