Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 关于宽字符
【标  题】:关于宽字符
【关键字】:
【来  源】:http://blog.csdn.net/deh_1984/archive/2007/01/24/1492134.aspx

关于宽字符

Your Ad Here

这几天在网上查了好多东西,就是为了明白款字符输入输出流的使用,总算还有点收获,

1) 宽字符输出:

           #include <iostream>
           #include <string>
           #include<fstream>
           #include<locale>

          using namespace std; 

          void main(){
                 wstring ws = L"我a1.txt";                                                         //定义生成的文件名
                 wstring wContent =L"\n中文测试aa121";                            //定义宽字符串,用来输出的文件
                 wofstream wfs;                                                                        //宽字符输出流 

                 wfs.open(ws.c_str(),ios_base::app|ios_base::binary);  //打开文件,
                 wfs.imbue(std::locale("chs"));                                              //设置输出流的imbue属性很重要

                  wfs<<wContent<<"\n\r";                                                        //将字符串输出
                  wfs<<ws<<"\n\r";                                                                    //输出换行,回车,但是显示的是乱码,

                  wfs.close();                                                                             //关闭流

                int a;                   //防止像在vc.net2005中那样控制台一闪而过;此处没什么用处
                cin>>a;
}

 

2)  读取:

#include <iostream>
#include <string>
#include <fstream>
#include <locale>

using namespace std;

#ifndef _UNICODE
#define _UNICODE           //定义_UNICODE
#endif

#ifndef UNICODE
#define UNICODE            //定义UNICODE
#endif

int main(void)
{

locale loc("chs");                //定义locale对象,用来设置输入流的imbue()


wifstream file;                    //定义输入流


file.imbue(loc);                 //使用locale对象loc来设置款字符输入流的imbue();这个要在打开文件之前设置


file.open("test.txt", ios::binary);      //打开文件

if (!file.is_open())
{
cerr << "file open error." << endl;  //文件如果没有打开,输出错误提示并返回
return -1;
}

wstring line;                                      //定义wstring对象,临时保存从文件中读取的字符串


int line_num=0;                               //统计读取的行数


wofstream file2;                              //输出流,将保存在line中的字符串输出


file2.imbue(loc);                              //设置file2的imbue();,要在打开文件之前设置
file2.open("test3.txt", ios::binary);  //打开文件


file2 << "\0xFEFF";                            //暂时还不知道啥意思这里,不过好像去掉了生成的文件还是可以用这个main方法来读取


wcout.imbue(loc);                           //设置wcout的imbue();


while (!file.eof())                               //开始读取,并输出到文件
{

line=L"";                                             //赋值前先将line置空
file >> line;

wcout << line << endl;                   //输出到控制台

file2 << line << endl;                     //输出到文件
}


file.close();
file2.close();                                     //关闭两个流

int a;
cin>>a;                                               //防止控制台一闪而过

return 0;                                            
}

 

这里还有好多我不明白的地方,只是找了好久有没有找到一个能将一下使用wifstream/wofstream输入输出的文章或者帖子,我就发一个,以作抛砖引玉之用,大家可以共同学习

鼠标钩子的几个源代码下载地址:【上一篇】
常量综述(一):【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 一条路.一个方向.
  • 为何使用XML
  • uC/IP - TCP/IP for microcontrollers
  • Windows 2000/XP操作系统中超强命令syskey
  • 如何在两台linux服务器之间用RSA键对的方法SSH/SCP不需密码
  • VS2005 Beta2 TS (FTP)下载完毕,体验中......
  • BBS(php & mysql)完整版(二)
  • Solaris 使用不同规格的硬盘用Disksuite做镜像
  • Thread.Sleep vs. Thread.CurrentThread.Join
  • Java Servlet API说明文档
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.