这样使用中文字符安全不?
#include <clocale>
#include <fstream>
#include <sstream>
#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, " " );
system( "mkdir D:\\我的图象存储文件夹 ");
ostringstream s;
s < < "D:\\我的图象存储文件夹\\备写图象.txt ";
ofstream ofs(s.str().c_str());
if(!ofs)
cout < < "文件打开错误 " < <endl;
else
cout < < "文件成功打开 " < <endl;
}
这样可以成功的创建 “D:\我的图象存储文件夹\备写图象.txt”
但是如果将 setlocale(LC_ALL, " " ); 注释掉,就无法创建 “备写图象.txt” 这个文件了。
我知道中文字符的操作要用宽字符,但在这儿我没有用宽字符,仅仅设置了local却也显示正确,这是为什么?这样用安全吗?setlocal()到底可以给我们提供那些保证?
[解决办法]
Locale是Locale,CodePage是CodePage。
这个地方建议你用UNICODE,因为你的代码估计不能在其他平台上跑了。
[解决办法]
没什么不安全,最多失败而已 ......
中文,最好使用 unicode,否则限制太大 ...
[解决办法]
setlocale(LC_ALL, " ");
作用是,使用当前系统的语言设置。否则使用 iso-8859-1 语言设置。
Windows 98 只支持 ANSI 字符,
Windows NT/2K/XP 支持 ANSI 和 UNICODE 两套 API。
因为字符串在程序中是写死的,因此楼主的程序只能在中文环境下运行。
推荐楼主参考:(推荐)
http://www.regexlab.com/zh/encoding.htm