C++ 正在分析在内容中迭代的stringstream无效

C++ 正在分析在内容中迭代的stringstream无效,c++,parsing,stringstream,peek,C++,Parsing,Stringstream,Peek,我有以下代码从streamstring中检索双值,但由于某些原因,我无法遍历流,它只加载流中的第一个值,然后退出,而在这两种情况下(I和f),请参见以下内容: std::string pois_fija_lista = argv[11]; std::string pois_flotante_lista= argv[12]; std::vector<double> vector_pois_fija(8), vector_pois_flotante(8); st

我有以下代码从streamstring中检索双值,但由于某些原因,我无法遍历流,它只加载流中的第一个值,然后退出,而在这两种情况下(I和f),请参见以下内容:

std::string pois_fija_lista = argv[11];
    std::string pois_flotante_lista= argv[12];

    std::vector<double> vector_pois_fija(8), vector_pois_flotante(8);
    std::stringstream ss_fija(pois_fija_lista), ss_flotante(pois_flotante_lista);

    int i=0;
    while (ss_fija >> i || ss_fija.eof())
    {
        vector_pois_fija.push_back(i);

        if (ss_fija.peek() == ';')
            ss_fija.ignore();
    }

    int f=0;
    while (ss_flotante >> f || ss_flotante.eof())
    {
        vector_pois_flotante.push_back(f);

        if (ss_flotante.peek() == ';')
            ss_flotante.ignore();
    }
std::string pois_fija_lista=argv[11];
std::string pois_flotante_lista=argv[12];
std::向量向量pois fija(8),向量pois flotante(8);
标准:stringstream ss_fija(pois_fija_lista)、ss_flotante(pois_flotante_lista);
int i=0;
while(ss_fija>>i | | ss_fija.eof())
{
向量向后推(i);
if(ss_fija.peek()=';')
不必理会;
}
int f=0;
while(ss_flotante>>f | | ss_flotante.eof())
{
向量pois flotante.向后推(f);
if(ss_flotante.peek()=';')
不要理会;
}
仅供参考,stringstream中取自argv的值为: -461.3175;-417.031983203125;-523.8393;-417.031983203125;-491.6311;-518.393083203125;-490.6838;-512.709283203125


-102.287501220703-54.613701647949;-164.809301220703;-54.613701647949;-132.601101220703;-155.974801647949;-131.653801220703;-150.291001647949

您需要提取到一个double而不是int,否则将设置streams failbit

您还希望在eof上终止而不是继续。实际上并不需要eof检查,因为将流转换为bool将在eof上给出false

double i = 0.0;
while (ss_fija >> i)
{
    vector_pois_fija.push_back(i);

    if (ss_fija.peek() == ';')
        ss_fija.ignore();
}

是的,当您以这种方式创建向量时,将添加8个默认初始化(0.0)值,并将从流中读取的所有值追加到它们之后。如果你想优化内存分配,你应该调用vector::reserve。谢谢,它做到了。我还修改了向量声明并删除了(8),因为它在赋值中造成了一些问题。