gpt4 book ai didi

c++ - 如何从文件中读取数据,然后将数据转换为int并将其存储在 vector 中

转载 作者:行者123 更新时间:2023-12-03 06:56:00 33 4
gpt4 key购买 nike

我试图从文本文件中读取数据,将其内容转换为整数,最后将整数值存储到 vector 中。但是,我遇到一个问题,即转换跳过了.txt文件中的最后一个数字,并且在打印时似乎在 vector 的开头添加了一个随机值。
例如,我的 test.txt 文件具有以下值(注意:所有值都放在单独的行中):

23
57
81
19
26
45
38
63
99
4
这是我的 main.cpp :
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

int main()
{
vector<int> myIntArray;
string line;
ifstream fileName("test.txt");

for(int number; getline(fileName, line, '\n'); number = stoi(line))
{
myIntArray.push_back(number);
cout << "Reading in number from the file: " << number << endl;
}
}
一旦运行程序,这就是我得到的输出:
Reading in number from the file: 28156
Reading in number from the file: 23
Reading in number from the file: 57
Reading in number from the file: 81
Reading in number from the file: 19
Reading in number from the file: 26
Reading in number from the file: 45
Reading in number from the file: 38
Reading in number from the file: 63
Reading in number from the file: 99
我不确定第一个数字(28156)来自何处,或者为什么它跳过了 test.txt 文件中的最后一个数字(4),但这是我的代码存在的问题。

最佳答案

执行循环体后,就执行来执行for循环的第三部分(本例中为number = stoi(line))。
因此,28156是未初始化的非静态局部变量的不确定值,最后的4会被转换并丢弃。
您必须像这样使用number
之前进行的转换:

 for(int number; getline(fileName, line, '\n'); )
{
number = stoi(line);
myIntArray.push_back(number);
cout << "Reading in number from the file: " << number << endl;
}

关于c++ - 如何从文件中读取数据,然后将数据转换为int并将其存储在 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64701924/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com