String 用户输入的STOL和STOI的C++精度

String 用户输入的STOL和STOI的C++精度,string,c++11,parsing,user-input,String,C++11,Parsing,User Input,试图从字符串中解析一个浮点数,它返回的精度为0,我要找的是0.0 代码: 样本输入: cid到达\时间方向\原始方向\目标 0.1.1^^ 1.2.0^^ 2.3.3^ 5.4.4^^ 6.5.7>^ 7.5.9^ 我所尝试的: 我试过stol、stoi、stold、stod,但它们都不适用于精确性。这可能吗?或者有没有我缺少的解决方法?如果你想解析一个浮点数,你需要使用stod或stof或stold,但stod通常是你想要的。您需要将结果赋给一个类型允许浮点数的变量,通常是双精度的。float

试图从字符串中解析一个浮点数,它返回的精度为0,我要找的是0.0

代码:

样本输入:

cid到达\时间方向\原始方向\目标

0.1.1^^

1.2.0^^

2.3.3^

5.4.4^^

6.5.7>^

7.5.9^

我所尝试的:
我试过stol、stoi、stold、stod,但它们都不适用于精确性。这可能吗?或者有没有我缺少的解决方法?

如果你想解析一个浮点数,你需要使用stod或stof或stold,但stod通常是你想要的。您需要将结果赋给一个类型允许浮点数的变量,通常是双精度的。float和long-double对应于stof和stold


long是整数类型。

long arriv=std::stoiparse.front;永远不会给你任何东西,除了一个整数值,因为你把结果赋给一个长的,不能也不代表浮点值的值。我尝试了stol,我也遇到了同样的问题。
queue<Car> getInputData() {
    string input;
    string line;
    string delin = " ";
    string::size_type sz = 0.0; 
    int counter = 0;
    queue<Car> cars;
    while (getline(std::cin, line) && !line.empty()) 
        {
        if (counter != 0)
            {
            queue<string> parse = getStringList(line, " ");
            _directions dir;
            int cid = std::stoi(parse.front());
            parse.pop();
            long arriv = std::stoi(parse.front()); //This returns 1 rather than 1.1
            parse.pop();
            dir.start = parseToDirection(parse.front(), true);
            parse.pop();
            dir.end = parseToDirection(parse.front(), false);
            parse.pop();
            Car car = Car(dir, cid, arriv);
            cars.push(car);

        }
        counter++;
    }
return cars; 
}