gpt4 book ai didi

c++ - 解析 stringstream 迭代内容不起作用

转载 作者:行者123 更新时间:2023-11-30 02:38:35 25 4
gpt4 key购买 nike

我有以下代码从流字符串中检索 double 值,但由于某种原因我无法遍历流,它只是加载流中的第一个值然后退出 while,在这两种情况下(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();
}

仅供引用,从 argv 中获取的 stringstream 中的值是:-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.653801222057064;-131.653801221907064;7

最佳答案

您需要提取到 double 而不是 int,否则流 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();
}

关于c++ - 解析 stringstream 迭代内容不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30677577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com