使用fstream读取ASCII文件

时间:2015-05-27 17:32:12

标签: c++

有一个ASCII文本文件,其中包含一些整数,每个都用空格分隔,有时这些数字会转到一个新行。例如:

// my_file.txt
23 45 973 49
44 1032 33 99
43 8 4 90824

我想将这些数字中的100个读成一个“整数”数组。到目前为止,我有以下代码:

int x[100];
fstream file_in("my_file.txt", ios::in);
for (int i = 0; i < 100; i++)
{
    file_in >> x[i];
}

但是,我现在想做其他一些我不确定的事情。

  1. 如果我只想读取整个文件,而不必经过循环怎么办?如果这是二进制数据,我知道我可以写file_in.read((char*)&x[0], 100 * sizeof(int))。但是如何使用ASCII文件执行此操作?

  2. 如果我想跳过文件中的前3个数字,并从第4个开始阅读怎么办?同样,如果这是二进制数据,我可以使用file_in.seekg(3 * sizeof(char))。但我不知道如何跳过ASCII文件。

1 个答案:

答案 0 :(得分:2)

没有原始循环!

阅读整个文件:

#include <fstream>
#include <iterator>
#include <vector>

int main()
{
    std::ifstream f("data.txt");
    std::vector<int> v(std::istream_iterator<int>(f), {});

跳过前三个:

   v.erase(v.begin(), v.begin() + 3);