我的.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
我想念什么吗?
答案 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) {...