我需要一些帮助,将文本文件中的空格分隔为数组。这是一个文本文件的例子:" 69 2 189 1876" 。 int的数量是已知的(本例中为4)。我尝试谷歌搜索,但仍然没有找到一个令人满意的解决方案。这是我第一次进行文件I / O,所以请放轻松。在此先感谢:)
答案 0 :(得分:3)
只需使用std::copy
:
#include <algorithm>
#include <fstream>
#include <iterator>
#include <vector>
std::vector<int> array;
std::ifstream stream("filename");
std::copy(std::istream_iterator<int>(stream),
std::istream_iterator<int>(),
std::back_inserter(array));
如果您只想阅读前N个,请使用std::copy_n
代替std::copy
。
答案 1 :(得分:0)
这显示了一种可能的方法:
const size_t N = 4;
int a[N] = {};
std::ifstream in( "YourTextFile" );
size_t n = 0;
while ( n < N && in >> a[n] ) ++n;
如果读取值的数量未知,则可以使用标准类std :: vector代替数组。例如
std::ifstream in( "YourTextFile" );
std::vector<int> v;
int num;
while ( in >> num ) v.push_back( num );
如果显示文件至少包含向量中保留的元素数,则可以为向量保留一些初始内存。例如
v.reserve( 4 );