我最近开始使用eclipse作为我的C ++代码,并希望运行一个简单的函数,要求用户输入文件名,然后从文件中读取并汇总所有数字以测试它。
string filename;
do {
cout << "Enter File Name: "; // Asks for user input
getline(cin, filename);
}
while (filename.empty());
ifstream myfile (filename);
if (myfile.is_open()) {
// sums up text file & outputs it
}
else {
cout << "Error Opening " << filename << endl;
}
当我通过我的可执行文件夹中的Windows命令提示符运行它并输入文件名时,程序运行正常。但是,当我尝试使用完全相同的输入通过eclipse的控制台运行它时,我将工作目录设置为文件最明确存在的项目根目录,文件无法打开。
如果我改变一行:
ifstream myfile("test1.txt");
然后代码再次完美地工作。所以现在我已经缩小了,由于某种原因,Eclipse控制台通过getline解释我的文本输入与windows命令提示符不同,但我不确定我能做什么,所以它的行为一致。
调用
cin.ignore()
在调用getline()之前,只需删除输入的第一个字符(因此它会尝试&#34; \ test1.txt&#34;)。
知道eclipse对其控制台究竟做了什么让getline变得不可靠?如果是这种情况,我应该怎么做才能解决它?