在 C++ 中,我有一个双变量要读取,它用逗号(0,07)分隔。我首先从 excel 中读取一个字符串并尝试将其转换为 double 。
string str = "0,07"; // Actually from Excel.
double number = strtod(str .c_str(), NULL);
double number1 = atof(str .c_str());
cout << number<<endl;
cout <<number1<<endl;
它们都返回 0 作为输出而不是 0.07。有人可以解释我如何将 double 转换为 0.07 而不是 0。
最佳答案
您可以为它定义一个自定义的数字构面 (numpunct):
class My_punct : public std::numpunct<char> {
protected:
char do_decimal_point() const {return ',';}//comma
};
然后使用 stringstream 和 locale :
stringstream ss("0,07");
locale loc(locale(), new My_punct);
ss.imbue(loc);
double d;
ss >> d;
DEMO
关于c++ - 将字符串转换为以逗号分隔的双变量(0,07),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32013041/