首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这样使用中文字符安全不?解决方法

2012-03-09 
这样使用中文字符安全不?#includeclocale#includefstream#includesstream#includeiostreamusingna

这样使用中文字符安全不?
#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

热点排行