从文件读取时,值没有被推回到向量中

时间:2018-09-11 09:00:28

标签: c++ c++11

我的.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

我想念什么吗?

3 个答案:

答案 0 :(得分:4)

每次迭代您都有一个全新的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

}

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您必须在while的{}边界之外声明矢量。 当您按照编写的方式进行操作时,将为循环的每个迭代创建新的向量,该向量将接收一个元素并在最后终止。

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