逗号用C ++分隔浮点数

时间:2016-04-21 03:00:49

标签: c++ io

我想分开一个数字列表,例如:34,45,12.3,100,34.6,50

只有在没有这样的小数的情况下我才能这样做:

#include <vector>
#include <string>
#include <sstream>
#include <iostream>

int main()
{
    std::string str = "34,45,12.3,100,34.6,50";
    std::vector<int> vect;

    std::stringstream ss(str);

    int i;

    while (ss >> i)
    {
        vect.push_back(i);

        if (ss.peek() == ',')
            ss.ignore();
    }

    for (i=0; i< vect.size(); i++)
        std::cout << vect.at(i)<<std::endl;

}

这里的问题是小数。以上将产生:

34 45 12 3 100 34 6 50

虽然它应该产生:

34 45 12.3 100 34.6 50

基本上是上面的代码,当它看到一个点'.'时,它就好像是一个逗号。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您应该使用float并将代码更改为使用float而不是int:

#include <vector>
#include <string>
#include <sstream>
#include <iostream>

int main()
{
    std::string str = "34,45,12.3,100,34.6,50";
    std::vector<float> vect;

    std::stringstream ss(str);

    float i;

    while (ss >> i)
    {
        vect.push_back(i);

        if (ss.peek() == ',')
        ss.ignore();
    }

    for (i=0; i< vect.size(); i++)
    std::cout << vect.at(i)<<std::endl;

}

答案 1 :(得分:3)

您应该声明float i而不是int i,并将向量声明为浮点数的向量,而不是整数向量。这是因为12.4不是整数,而是浮点数。

答案 2 :(得分:1)

我认为你的代码将12.3解释为两个不同的数字,因为你没有将这个数字声明为浮点数。向量将所有字符串保存为整数,而不是浮点数。如果你将向量声明为浮点数而不是整数,那么你的问题应该得到解决