SilverStar

专注于C++技术
随笔 - 2, 文章 - 0, 评论 - 0, 引用 - 0
数据加载中……

string与wstring相互转换

// VS11

#include <codecvt>
#include <string>
#include <locale>
#include <iostream>
#include <fstream>
using namespace std;

typedef codecvt_byname<wchar_t,char,std::mbstate_t> F;
int _tmain(int argc, _TCHAR* argv[])
{
    locale::global(locale(locale(),new codecvt_utf8<wchar_t>()));

    wstring_convert<F,wchar_t> stows(new F("chs")); 
    
    string str="Hello,世界!";
    wstring wstr;

    wcout.imbue(locale("chs"));
    wstr=stows.from_bytes(str);
    wcout<<wstr<<endl;
    wofstream("E:\\Wout.txt")<<wstr;// 以UTF-8 编码保存
    
    str=stows.to_bytes(wstr);
    cout<<str<<endl;
    ofstream("E:\\out.txt")<<str;

    return 0;
}

posted on 2012-10-15 18:15 lethe555 阅读(312) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理