有一个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];
}
但是,我现在想做其他一些我不确定的事情。
如果我只想读取整个文件,而不必经过循环怎么办?如果这是二进制数据,我知道我可以写file_in.read((char*)&x[0], 100 * sizeof(int))
。但是如何使用ASCII文件执行此操作?
如果我想跳过文件中的前3个数字,并从第4个开始阅读怎么办?同样,如果这是二进制数据,我可以使用file_in.seekg(3 * sizeof(char))
。但我不知道如何跳过ASCII文件。
答案 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);