无法打开文件c ++

时间:2016-03-29 16:19:06

标签: c++ eclipse codeblocks

我现在真的很挣扎,最初还有其他与ecl​​ipse有关的问题,似乎已经解决了。代码看起来对我来说(与加载文件的示例代码相比)但是我无法加载任何东西,因为我输入的错误总是被触发。没有建筑错误atm。我究竟做错了什么?尝试使用eclipse(mac)和Code :: blocks(win vm),两者似乎都有问题。数据文件本身与.cpp文件位于同一文件夹中。

#include <iostream>
#include <string>
#include <math.h>
#include <fstream>
using namespace std;

int main() {
    cout << "Choose which data file to load (1-4)" << endl;
    int file;
    cin >> file;
    ifstream data;

    switch (file) {
        case 1:
            data.open("dataSet1.txt");
        case 2:
            data.open("dataSet2.txt");
        case 3:
            data.open("dataSet3.txt");
        case 4:
            data.open("dataSet4.txt");
    }

    if (!data) {
        cerr << "File not Loaded" << endl;
        return -1;
    }

    string FullData[61];
    for (int i=0; i=60; i++){
        data >> FullData[i];
        cout << FullData[i] << endl;

    }

    return 0;
}
编辑:让程序停止显示错误,它似乎正在加载文件,但我的分配/显示循环现在似乎没有工作,因为它一遍又一遍地显示最后一个数据点。

3 个答案:

答案 0 :(得分:4)

  

数据文件本身与.cpp文件位于同一文件夹中

.cpp位于同一文件夹并不重要,数据集文件应与编译的二进制程序位于同一文件夹中。

也可能是工作目录设置没有指向数据集文件所在的目录。传递到open成员函数的所有内容都是string,这意味着解释该字符串的含义取决于环境设置。

答案 1 :(得分:0)

相同的问题。以@ Gluk36的情况为例,问题在于工作目录设置。

在这种情况下,您必须取消选择“使用默认设置”并设置二进制文件的位置。我附上一张截图,供Linux下的eclipse CDT 4.9提供参考。

enter image description here

答案 2 :(得分:-2)

每个案例后你必须有break语句 像:

    case1://something;
          break;

并且必须使用close()函数关闭流

    data.close();