将.txt值推送到向量中

时间:2015-05-15 16:50:35

标签: c++ vector

我一直试图弄清楚如何将.txt中的内容推送到向量中并且我还没有成功,所以我已经偏离了我的任务并创建了一个简单的代码学习它。

我试图在这里找到类似的帖子,但我不能,所以这里是我的代码:

这就是文本文件中的内容:

32 34 5 6 243 2341 234 213 24 123 12354 124 432 12

这是代码:

#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int main () {

vector <int> numbers;
int val;
int newval = 50;

  ifstream file ("text.txt");
   if ( file.is_open())
   {
       for ( int i = 0; i < newval ; i++)
       {
            numbers.push_back(val);
       }
   }else{
       cout << "unable to open file."<<endl;
   }

      for ( int i = 0; i < numbers.size(); i++){
        cout << numbers[i] << endl;
      }

 return 0;
}

代码正在做的是打印50个零。我不确定我做错了什么,任何见解都会非常感激!谢谢。

P上。 S - 在最初的for循环中我会这样做:

for ( int i = 0; i < numbers.size() ; i++)
   {
        numbers.push_back(val);
   }

但这对我没有任何意义,因为矢量最初是空的。如果那是我应该做的,请解释一下。谢谢。

2 个答案:

答案 0 :(得分:4)

除非我失明,否则您永远不会为val分配值。

如果是这种情况,您就会获得0,因为它是int的默认值。

要解决此问题,您需要先将读取值分配给val,然后再将其添加到numbers。另请注意,它最有可能被视为string,因此在将其分配给int之前,您必须将其转换为val;但这就是它自己的一系列问题。

答案 1 :(得分:0)

所以,在我收到社区成员的帮助后(carcigenicate和twalberg),我已经解决了代码的所有问题,我将在下面发布它以帮助其他任何有这类问题的人。

这是原始文本文件:

32 34 5 6 243 2341 234 213 24 123 12354 124 432 12

以下是代码:

#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int main () {

vector <int> numbers;
int val=0;


  ifstream file ("text.txt");
   if ( file.is_open())
   {
     while  (! file.eof())
       {
       while (file >> val){
            numbers.push_back(val);
       }
     }
   }else{
       cout << "unable to open file."<<endl;
    }
      for ( int i = 0; i < numbers.size(); i++){
        cout << numbers[i] << endl;
      }

file.close();
 return 0;
}

什么打印输出:

32
34
5
6
243
2341
234
213
24
123
12354
124
432
12

谢谢社区!