【问题标题】:Vector only reads one line from .txt file c++Vector仅从.txt文件c ++中读取一行
【发布时间】:2015-09-11 18:54:07
【问题描述】:

我试图将 .txt 文件中的数据读取到向量中,但它在存储第一行后停止。

这是我从文件中读取的数据。

0 100 08 00 00
0,182,08 00 15
1,100,08 50 46
1,132,08 51 18

这是代码

input.open ("RaceData.txt");
if (input.fail())
{
    cout <<"Cannot Open File.\n";
    exit(1);
}

int lap(0), racer(0), time(0);
vector <int> data;

while (input >> lap >> racer >> time)
{
   data.push_back(lap);
   data.push_back(racer);
   data.push_back(time);

}

//display
for (int i=0; i < data.size(); i++)
    cout << data [i] << " ";

我认为它可能因为逗号而无法继续阅读,如果是这样,我如何不阅读逗号?

提前致谢。

【问题讨论】:

  • 想要阅读或至少跳过逗号。你没有提取它们的问题。我认为您应该将整行读入一个字符串,然后单独解析它。
  • 您的文件格式似乎不一致。为什么第一行没有逗号,而后面的都是逗号?如果您希望能够解析您读取的文件,则需要它具有一致的格式。
  • @bku_drytt 我正在使用的书中书中的示例含糊不清。我使用了给出的数据,但我认为它应该没有任何逗号,因为在我去掉所有逗号后,数据就可以很好地存储在向量中了。

标签: c++ file-io vector storing-data


【解决方案1】:

忽略逗号的最佳方法是不要忽略空格。这是一个例子:

...
char c;
input >> std::noskipws;
while (input >> lap >> c >> racer >> c >> time >> c)
{
...

根据您对文件格式的期望,您可能需要更改以上内容以接受多个空格。我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多