关于c语言文件操作的一个问题

img


这样用filename引入路径的方法正确吗?我打不开文件,如果不用filename引入直接填入路径,却可以打开,怎么回事呢?

不对,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;
}