huidong

首页 | 会员登录 | 关于争取 2022 寒假做出汇东网 Ver3.0.0 !
搜索文章


建议打包为 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



返回首页


Copyright (C) 2018-2024 huidong