我现在真的很挣扎,最初还有其他与eclipse有关的问题,似乎已经解决了。代码看起来对我来说(与加载文件的示例代码相比)但是我无法加载任何东西,因为我输入的错误总是被触发。没有建筑错误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;
}
编辑:让程序停止显示错误,它似乎正在加载文件,但我的分配/显示循环现在似乎没有工作,因为它一遍又一遍地显示最后一个数据点。
答案 0 :(得分:4)
数据文件本身与.cpp文件位于同一文件夹中
与.cpp
位于同一文件夹并不重要,数据集文件应与编译的二进制程序位于同一文件夹中。
也可能是工作目录设置没有指向数据集文件所在的目录。传递到open
成员函数的所有内容都是string
,这意味着解释该字符串的含义取决于环境设置。
答案 1 :(得分:0)
相同的问题。以@ Gluk36的情况为例,问题在于工作目录设置。
在这种情况下,您必须取消选择“使用默认设置”并设置二进制文件的位置。我附上一张截图,供Linux下的eclipse CDT 4.9提供参考。
答案 2 :(得分:-2)
每个案例后你必须有break语句 像:
case1://something;
break;
并且必须使用close()函数关闭流
data.close();