不对,filename已经是string类型,再加""(双引号)就变成普通字符串了,那就成了当前路径下名字为"filename"的文件。
fopen属于标准C库函数,要求C风格的字符串,如果你要用C++的string,必须转换成C风格字符串,可以用c_str成员函数得到。
另外,有打开文件操作,就别忘了关闭文件操作。
参考,
#include <iostream>
#include <string>
using namespace std;
int main()
{
string filename;
cin >> filename; //输入文件路径
FILE* fp = fopen(filename.c_str(), "r");
if (!fp) {
/* 异常处理 */
cerr << "open file error: " << strerror(errno) << endl;
return -1;
}
fclose(fp); // 关闭文件
return 0;
}