读书人

c++程序中无法识别中文路径怎么处理

发布时间: 2012-02-23 22:01:35 作者: rapoo

c++程序中,无法识别中文路径怎么办?
问题描述:我是在OpenSceneGraph中,读取一个文件的路径,文件路径包含了中文,这个时候OSG类库就不支持了,看网上说使用 setlocale( LC_ALL, "chs" );就可以支持了,可是还是不起作用,然后我使用 const wchar_t * 表示中文路径,在把const wchar_t* 转化为 UTF-8格式,也还是不能读取,请问应该怎么办呢?怎么才能识别中文呢?请大家帮忙看看!

[解决办法]
如果软件是自己使用,担心程序复杂,可以避免用中文路径和文件名
但如果要商用,还是要考虑支持中文路径和文件名,否则分发到用户之后会出问题

以下示例如何用宽字符API处理中文路径和文件名

C/C++ code
#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;} 

读书人网 >C++

热点推荐