【发布时间】:2018-11-01 10:52:48
【问题描述】:
我在使用 getline 命令从简单的 .txt 文件中提取数据时遇到了一点问题。
txt 文件非常简单:一列 400 个数字。我使用向量来存储它们,代码如下:
int i = 0;
string line;
vector <double> vec;
while (getline(input, line))
{
vec.push_back(i);
N++;
input >> vec[i];
i++;
}
它正确创建了一个包含 400 个元素的向量,但 txt 文件的第一行被忽略(我最终得到 vec[0] = txt 文件的第 2 行而不是第 1 行),第 399 个元素是 399 而不是 txt 的第 400 行文件。
我尝试了其他几种方法来提取此数据,但均未成功。
感谢您的帮助!
编辑:
我根据一些备注编辑了代码:
vector <double> vec;
string line;
double num;
while (getline(input, line))
{
input >> num;
vec.push_back(num);
}
不幸的是,它仍然跳过了我的文本文件的第一行。
编辑 2 --> 解决方案:
感谢您的所有评论,我意识到我在同时使用 getline 和 input >> num 时做错了;
问题的解决方法如下:
double num;
vector <double> vec;
while (input >> num)
{
vec.push_back(num);
}
【问题讨论】:
-
可能相关/欺骗,但我们需要minimal reproducible example t 确认:stackoverflow.com/questions/21567291/…
-
i未定义。你有什么理由不push_back只是line的内容? -
i 在 while (int i = 0) 之前定义。至于 push_back,它并没有完全解决我的问题,因为我仍然丢失了数据文件的第一行。
-
while (input >> i) vec.push_back(i); -
我已经用变量声明更新了代码。