2014-12-13 74 views
-2

我需要一些帮助读取从文本文件到数组的空格分隔int。这里是一个文本文件的例子:“69 2 189 1876”。已知整数的数量(在本例中为4)。我尝试了谷歌搜索,但还没有找到一个令人满意的解决方案。这是我第一次做文件I/O,所以请在我身上轻松一下。感谢提前:)从文本文件读取空格分隔的数字到一个整数(C++)

+1

你尝试过什么吗?你能够至少打开文件,并获得一些数字(作为instacce字符串)? – 2014-12-13 09:57:38

+0

你需要展示一个尝试,然后人们会很乐意告诉你你犯了什么错误,以及如何改进。你知道如何读取一个'int',并将其打印出来吗?你知道'std :: Vector'吗? – BoBTFish 2014-12-13 09:57:59

回答

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 ::矢量阵列读取值的数量。例如

对于
std::ifstream in("YourTextFile"); 
std::vector<int> v; 

int num;  

while (in >> num) v.push_back(num); 

你可以保留一些初始内存为载体,如果你是表明该文件包含在向量元素保留至少数。如果你想刚才读的第一N个1,使用std::copy_n代替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)); 

:例如

v.reserve(4); 
+0

我想将它们存储在一个不是矢量的数组中 – user3789296 2014-12-13 12:00:52

+0

@ user3789296在我的文章中写了如何在数据数量已知的情况下将数据存储在数组中。 – 2014-12-13 12:18:32

3

只需使用std::copy

+0

Vector!=数组 – user3789296 2014-12-13 12:00:19

+2

@ user3789296一个向量肯定是[数组](http://en.wikipedia.org/wiki/Array_data_structure)。如果你不想因为某种原因使用'std :: vector',并且你知道前面的大小,你可以使用'std :: array'并传递它的开始迭代器而不是'std:back_inserter(array)'。 – rightfold 2014-12-13 12:03:29

相关问题