我在这里苦苦挣扎,我的代码与此类似:
#include <iostream>
#include <string>
#include <ifstream>
using namespace std;
int main() {
string filename;
cout << "Enter the filename: ";
cin >> filename;
ifstream myfile(filename);
//code that does stuff, eg:
while (myfile >> thing) {
mydata[i] = thing;
i = i + 1; //etc, this *isn't* an issue
}
}
主要的问题是它似乎没有用g ++编译,但我确信我之前有这个工作。我在某处看到string filename;
位已被破坏,但除了将其存储为string
之外,我不知道如何申请文件名。有人可以帮忙吗?我也应该使用<fstream>
或<ifstream>
我真的没有看到差异。谢谢。
答案 0 :(得分:4)
如果您没有C ++ 11支持,则需要将const char*
传递给ifstream
构造函数。你可以这样做:
ifstream myfile(filename.c_str());
答案 1 :(得分:4)
您需要克服的第一个错误是this one:
main.cpp:3:20: fatal error: ifstream: No such file or directory
#include <ifstream>
^
compilation terminated.
实际上,这个标题不存在。你可能意味着fstream
。
更正后,the crux of your issue is:
main.cpp: In function 'int main()':
main.cpp:11:29: error: no matching function for call to 'std::basic_ifstream<char>::basic_ifstream(std::string&)'
ifstream myfile(filename);
这是因为fstream
构造函数在C ++ 98和C ++ 03中没有采用字符串参数。这是一种传统的疏忽,在C ++ 11中修复。
您有两种选择:
在上面的两个例子中,我不得不删除整个while
循环,因为它引用了程序中未声明的符号。报告问题时,请更加谨慎,并提供仅包含 您要解决的问题的testcase。