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; }
效果: