加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在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的状态以获取读取错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读