从文件读取时未将值推回矢量

Values not being pushed back into vector while reading from a file

本文关键字:文件 读取      更新时间:2023-10-16

我的.txt文件具有如下值:

36.68
36.64
36.66
36.66

我使用以下代码读取值:

ifstream ifs;
ifs.open("F:/test_files/IBM_prices.txt");
if (!ifs) { cerr << "cannot open prices file"; };
double price;
while (ifs >> price) {
cout << price << endl;                             //for debugging
vector <double>v;
v.push_back(price);
cout << "vector size is" << v.size() << endl;      //for debugging
}

当我运行代码时,矢量一直显示大小为1

我错过了什么吗?

每次迭代都有一个全新的v;它是在循环块中定义的本地对象。

将定义移出循环。

vector<double> v;
while (ifs >> price) {
cout << price << endl;                             //for debugging
v.push_back(price);
cout << "vector size is" << v.size() << endl;      //for debugging
}

您的vector <double>v是在while循环中定义的,因此在每次迭代中都会定义,并且其大小始终为 1。在while循环之外定义它,您将拥有实际大小。

您可以将cout放在while内,您可以看到vector的大小如何随着每个push_back而增加。

你必须在 while 的 {} 边界之外声明向量。 当你像你写的那样做时,你会为循环的每次迭代创建新的向量,它接收一个元素并在最后死亡。

vector <double>v;
while (ifs >> price) {...