将.txt值推入vector

Pushing .txt values into vector

本文关键字:vector txt      更新时间:2023-10-16

我一直在试图找出如何把东西从。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);
   }

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

除非我瞎了,否则你永远不会给val赋值。

如果是这种情况,您将得到0,因为这是int s的默认值。

要解决这个问题,您需要在将val添加到numbers之前实际分配一个读值。还要注意,它很可能被读为string,所以你必须在将其赋值给val之前将其转换为int;但这是它自己的问题。

所以,在我得到社区成员(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

感谢社区!