匯東網


wstring和string互转,相当轻松

[編輯] [转简体]
|
作者:huidong | 分類:【編程】C/C++
[ 17 瀏覽 0 評論 6 贊 5 踩 ]

概要
wstring和string互相转换

正文

建议打包为 string_func.h,如下:

#pragma once

#include <string>
#include <comutil.h>
#pragma comment(lib, "comsuppw.lib")
using namespace std;

string wtos(const wstring& ws)
{
	_bstr_t t = ws.c_str();
	char* pchar = (char*)t;
	string result = pchar;
	return result;
}

wstring stow(const string& s)
{
	_bstr_t t = s.c_str();
	wchar_t* pwchar = (wchar_t*)t;
	wstring result = pwchar;
	return result;
}


使用示例(完整的可运行代码):

#include <locale.h> /* 用于防止输出中文乱码 */

// wstring和string转换函数需要用的头
#include <string>
#include <comutil.h>
#pragma comment(lib, "comsuppw.lib")
using namespace std;

string wtos(const wstring& ws)
{
    _bstr_t t = ws.c_str();
    char* pchar = (char*)t;
    string result = pchar;
    return result;
}

wstring stow(const string& s)
{
    _bstr_t t = s.c_str();
    wchar_t* pwchar = (wchar_t*)t;
    wstring result = pwchar;
    return result;
}

int main()
{
    // 防止控制台输出wstring中的中文失败,需要locale.h
    setlocale(LC_ALL, "chs");

    wstring wstr = L"大家好hhh";

    string str = wtos(wstr);
    printf("string : ");
    printf(str.c_str());

    printf("\n");

    printf("wstring : ");
    wstr = L"";
    wstr = stow(str);
    wprintf(wstr.c_str());

    while(true);
    return 0;
}

效果:

图片.png

[ 6] [ 5]


 評論區  0 條評論

+ 添加評論