用fstream读取一个ASCII文件

Reading an ASCII file with fstream

本文关键字:一个 ASCII 文件 fstream 读取      更新时间:2023-10-16

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

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

我想读取100个这样的数字到一个"int"数组中。到目前为止,我有以下代码:

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个数字,并从第四个开始读取该怎么办?同样,如果这是二进制数据,我可以用file_in.seekg(3 * sizeof(char))。但是我不知道如何在ASCII文件中跳过。

没有原始循环!

读取整个文件:

#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);
相关文章: