建议打包为 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;
}
效果: