在 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
};

然后使用 stringstreamlocale :
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/

10-13 07:13