c++程序中,无法识别中文路径怎么办?
问题描述:我是在OpenSceneGraph中,读取一个文件的路径,文件路径包含了中文,这个时候OSG类库就不支持了,看网上说使用 setlocale( LC_ALL, "chs" );就可以支持了,可是还是不起作用,然后我使用 const wchar_t * 表示中文路径,在把const wchar_t* 转化为 UTF-8格式,也还是不能读取,请问应该怎么办呢?怎么才能识别中文呢?请大家帮忙看看!
[解决办法]
如果软件是自己使用,担心程序复杂,可以避免用中文路径和文件名
但如果要商用,还是要考虑支持中文路径和文件名,否则分发到用户之后会出问题
以下示例如何用宽字符API处理中文路径和文件名
#include <io.h>#include <stdio.h>void process_directory(const wchar_t * filespec) // 分析目录,遍历所有满足条件的文件{ struct _wfinddata_t fileinfo; intptr_t handle; if ((handle=_wfindfirst(filespec, &fileinfo)) == -1L) { perror("Files open error"); } else { do { // 处理文件 } while (_wfindnext(handle, &fileinfo) == 0); _findclose(handle); }}int main(){ process_directory(L"C:\\数据\\*.*"); return 0;}