【问题标题】:C++ Can't read from file and load into vectorC ++无法从文件中读取并加载到向量中
【发布时间】:2017-01-30 18:03:14
【问题描述】:

问题是我有一个文本文件,有 1,000,000 到 10,000,000 行 - 每行都有一个十进制值。

我试过这段代码:

    ifstream inData;
    inData.open("file.txt");
    std::vector<double> v1v;
    double s;
    while(inData>>s){
        v1v.push_back(s);
        cout << "Success" << endl;
    }

但它似乎根本没有填满我的向量。我也尝试过这种方法(注意文件中的行数是 1048570):

    double a1[1048570];
    ifstream inData;
    inData.open("file.txt");
    for (int i=0;i<1048570;i++){
        inData >> a1[i];
    }inData.close();

我不明白为什么它不工作,它正在运行,但向量中没有存储任何内容。

【问题讨论】:

  • 您确认文件打开操作成功了吗?如果没有,你应该从那开始。
  • 除此之外,您的文件可能需要位于您正在调试的同一文件夹中。尝试使用路径,而不仅仅是文件名。如果路径失败,可能是您没有成功打开文件。
  • 调试器是解决此类问题的正确工具。 询问 Stack Overflow 之前,您应该逐行逐行检查您的代码。如需更多帮助,请阅读How to debug small programs (by Eric Lippert)。至少,您应该 [编辑] 您的问题,以包含一个重现您的问题的 Minimal, Complete, and Verifiable 示例,以及您在调试器中所做的观察。

标签: c++ vector file-io ifstream


【解决方案1】:

您使用的是什么 IDE?在某些 IDE 中,您可能需要将正在读取的文件放在项目的主文件夹中(而不是在源代码文件夹中)。在 Eclipse 中,您需要将文件放在创建空 C 项目时看到的文件夹中。尝试导航到存储已编译可执行文件的文件夹,将文件放在那里并运行它。另外,你试过调试吗?

【讨论】:

    猜你喜欢
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2021-01-07
    相关资源
    最近更新 更多