码迷,mamicode.com
首页 > 其他好文 > 详细

stl中char 与wchar 的转换

时间:2014-12-04 23:02:11      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   使用   sp   on   

学习记录:

stl中 字符串 str自然对应的是string

宽字符串wchar 对应的是wstring

宽字符串占用两个字节

两者的转换有三种办法

1 windows 的api转换函数WideCharToMultiByte()与MultiByteToWideChar(). 不适合跨平台使用.

2 ATL中CA2W类与CW2A类。或者使用A2W宏与W2A宏。稍显累赘和麻烦

3 使用CRT库的函数 函数和使用方法见下列代码

 

#include <string>
#include <iostream>
#include <locale.h>

using namespace std;


string ws2s(const wstring &ws)
{
    const wchar_t* wpchar = ws.c_str();
    size_t returnVal = 0;
    size_t wSize = 2*ws.size() + 1;
    char* pchar = new char[wSize];
    memset(pchar,0,wSize);
    wcstombs_s(&returnVal,pchar,wSize,wpchar,wSize);
    string result = pchar;
    delete[] pchar;
    return result;
}


int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"chs");

    wstring ws = L"中国 你好,sf*&%*&^%^&sd,这是一个测试";
    string ss = ws2s(ws);

    wcout << ws << endl;
    cout << ss << endl;

    return 0;
}

 

stl中char 与wchar 的转换

标签:style   blog   io   ar   color   os   使用   sp   on   

原文地址:http://www.cnblogs.com/itdef/p/4143917.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!