【发布时间】:2020-01-05 06:43:40
【问题描述】:
我正在编写一个从文件中读取数据的程序。
.txt 文件如下所示:
文字,数字,:5,3,5
文字、数字、:1、3、7、8
我成功提取了“文本”和“数字”,但是当我遇到:“5,3,5”之后的数字时,我真的卡住了。
我需要将这些数字更改为整数并将它们添加到整数向量中,所以我去掉了逗号,然后尝试使用 stoi 将它们转换为整数,但是,stoi 只是“提取”第一个数字,在这种情况下,只有 5 和 1,这是我尝试过的:
while(getline(file, line)){
stringstream ss(line);
getline(ss, text, ',');
getline (ss, nums, ':');
getline (ss, numList, ',' );
replace(numList.begin(), numList.end(), ',' , ' ');
vec.push_back(stoi(numList));
randomStruct str = {text, nums, numList};
randomStructVec.push_back(str);
}
打印向量的元素时,我需要输出如下所示:
5 3 5
1 3 7 8
我得到的是:
5
1
有时我也会得到重复的数字: 5
1111
或
5555
11
我需要一种方法让 stoi 函数将这一行字符串中的所有数字转换为整数,并将它们存储在整数的 vec 中。
任何帮助,将不胜感激。
【问题讨论】:
-
看看SO: reading from text file to struct vector, but text file lines are of different length的这个答案。它解决了类似的问题。 (您的问题是
vec.push_back()只存储一个值。您必须将其放入循环中。)