我一直试图弄清楚如何将.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);
}
但这对我没有任何意义,因为矢量最初是空的。如果那是我应该做的,请解释一下。谢谢。
答案 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
谢谢社区!