如何在C中将文件读入向量?
发布时间:2020-12-16 09:14:04 所属栏目:百科 来源:网络整理
导读:我需要从包含每行上的新浮点数的.data或.txt文件中读取一个向量. 我已经远远地搜索并应用了许多不同的方法,但每次我得到相同的结果,Main.size()为0和错误说“向量下标超出范围”,所以显然向量只是没有读取任何东西进入文件. 注意:该文件既在文件夹中,也包含
我需要从包含每行上的新浮点数的.data或.txt文件中读取一个向量.
我已经远远地搜索并应用了许多不同的方法,但每次我得到相同的结果,Main.size()为0和错误说“向量下标超出范围”,所以显然向量只是没有读取任何东西进入文件. 注意:该文件既在文件夹中,也包含在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 解决方法
你的循环错了:
for (int i=0; i=((Main.size())-1); i++) { 试试这个: for (int i=0; i < Main.size(); i++) { 此外,将数字读入矢量并将其写入stdout的更惯用的方法是这样的: #include <iostream> #include <iterator> #include <fstream> #include <vector> #include <algorithm> // for std::copy int main() { std::ifstream is("numbers.txt"); std::istream_iterator<double> start(is),end; std::vector<double> numbers(start,end); std::cout << "Read " << numbers.size() << " numbers" << std::endl; // print the numbers to stdout std::cout << "numbers read in:n"; std::copy(numbers.begin(),numbers.end(),std::ostream_iterator<double>(std::cout," ")); std::cout << std::endl; } 虽然您应该检查ifstream的状态以获取读取错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |