【发布时间】:2013-02-28 15:03:16
【问题描述】:
我需要从每行包含一个新的float 数字的.data 或.txt 文件读取到一个向量中。
我进行了广泛的搜索并应用了许多不同的方法,但每次我得到相同的结果时,Main.size() 的 0 和错误说 "Vector Subscript out of Range",所以很明显向量只是没有读入任何内容文件。
注意:该文件既在文件夹中,也包含在 VS 项目中。
无论如何,这是我的代码:
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
using namespace std;
int main() {
vector<double> Main;
int count;
string lineData;
double tmp;
ifstream myfile ("test.data", ios::in);
double number;
myfile >> count;
for(int i = 0; i < count; i++) {
myfile >> tmp;
Main.push_back(tmp);
cout << count;
}
cout << "Numbers:\n";
cout << Main.size();
for (int i=0; i=((Main.size())-1); i++) {
cout << Main[i] << '\n';
}
cin.get();
return 0;
}
我得到的结果总是很简单:
Numbers:
0
【问题讨论】:
-
检查所有I/O操作的结果。
-
你的
test.data实际上是什么样子的? -
请查看反序列化。通常你会创建一个向量类和一个向量集合类(可以处理 txt 输入文件)。一个好的开始是这个问题的答案:stackoverflow.com/questions/11415850/…
-
test.data 就像这样:
1.4049 4.9166 3.3903 2.4963 2.4429 3.7053 1.9727 3.1569 2.5528 4.4527 1.5241但有 1000 个条目都在新行上 -
How to read a binary file into a vector of unsigned chars 的可能重复项。看起来在您询问之前 20 分钟询问了 dup。你们上的是同一门课吗?