中文名一样可以处理,只不过在非中文系统就找不到文件罢了。
fopen(可以处理中文名称),标准c/c++中(windows),在处理中文的时候,需要设置setlocal(LC_ALL,"chs")
void main()
{
setlocal(LC_ALL,"chs");
FILE* file = fopen("c:/中文.txt","rt");
}
但是gcc(linux)好像没有_wfopen吧
@zhouxinghuai:
我没有用这个函数,直接使用fopen也可以打开中文名称的文件
重要的不是你的文件名是中文字符,而是你传入的参数类型。
fopen 使用 char* ,_wfopen 使用 wchar_t * ,前者针对多字节,后者为UNICODE。
前者受OS和IDE的编译选项影响,后者更为通用。
建议你始终使用 UNICODE来编译程序,并且始终使用 UNICODE 版的 API。
但是gcc好像没有_wfopen吧
@zhouxinghuai: 我的意思就是,没有 _wfopen 不要紧,你可以自己封装一个 _wfopen,关键是在你的程序中要始终使用 UNICODE 来编写程序,你可以参照JAVA,NET中对字符串的强制约束。
至于提到的:setlocal(LC_ALL,"chs");
即使最后恢复了,期间也有副作用。