读取空格将数字从文本文件分隔为整数数组(C ++)

时间:2014-12-13 09:55:40

标签: c++ arrays file-io

我需要一些帮助,将文本文件中的空格分隔为数组。这是一个文本文件的例子:" 69 2 189 1876" 。 int的数量是已知的(本例中为4)。我尝试谷歌搜索,但仍然没有找到一个令人满意的解决方案。这是我第一次进行文件I / O,所以请放轻松。在此先感谢:)

2 个答案:

答案 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 );