C++中fopen函数输入的路径类型为const char*,
FILE *__cdecl fopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
在使用std::cin输入文件路径给fopen函数使用的过程中,程序一直读取不到文件,
一番分析后发现,fopen函数中的路径字符串分割符需要使用"\\",而使用cin输入的路径分割符为"\"。
所以需要将输入路径字符串中的"\"全部转换成"\\"。
方法如下:
string filename std::cin >> filename; std::cout << filename<< endl; string::size_type pos=0; while((pos=filename.find('\\',pos))!=string::npos) { filename.insert(pos,"\\"); pos=pos+2; } std::cout << filename<< endl; FILE * file; file = fopen(filename, "rb");
程序运行结果如下:
D:\Download\306.bmp
D:\\Download\\306.bmp
问题解决!