方式一:调用Windows API

#include <Windows.h>
//将string转换成wstring
wstring string2wstring(string str)
{  wstring result;  //获取缓冲区大小,并申请空间,缓冲区大小按字符计算  int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0);  TCHAR* buffer = new TCHAR[len + 1];  //多字节编码转换成宽字节编码  MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len);  buffer[len] = '\0';             //添加字符串结尾  //删除缓冲区并返回值  result.append(buffer);  delete[] buffer;  return result;
}  //将wstring转换成string
string wstring2string(wstring wstr)
{  string result;  //获取缓冲区大小,并申请空间,缓冲区大小事按字节计算的  int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL);  char* buffer = new char[len + 1];  //宽字节编码转换成多字节编码  WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);  buffer[len] = '\0';  //删除缓冲区并返回值  result.append(buffer);  delete[] buffer;  return result;
}

方式二:采用ATL封装_bstr_t的过渡

#include <comutil.h>
#pragma comment(lib, "comsuppw.lib")string ws2s(const wstring& ws)
{_bstr_t t = ws.c_str();  char* pchar = (char*)t;  string result = pchar;  return result;
}wstring s2ws(const string& s)
{_bstr_t t = s.c_str();  wchar_t* pwchar = (wchar_t*)t;  wstring result = pwchar;  return result;
}

以上转载自
https://blog.csdn.net/liminwang0311/article/details/79975174
另外C++ 11 好像还支持一下这种

// string_cvt.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include "pch.h"
#include <iostream>
#include <string>
#include <codecvt>using namespace std;
int main()
{wstring str = L"中国人";wstring_convert<codecvt<wchar_t, char, mbstate_t>> converter(new codecvt<wchar_t, char, mbstate_t>("CHS"));string narrowStr = converter.to_bytes(str);wstring wstr = converter.from_bytes(narrowStr);cout << narrowStr << endl;wcout.imbue(locale("chs"));wcout << wstr << endl;
}

以上转载自
https://blog.csdn.net/zang141588761/article/details/85600249

C++ wstring 与 string 之间的相互转换.相关推荐

  1. Java中List和数组Array和String之间的相互转换

    Java中List和数组Array和String之间的相互转换 之前面试的时候遇到一个问题,先给大家分享一下.问:我想分别得到list,string和数组的长度,我能通过什么代码来得到? 这个问题先留 ...

  2. C++实现int与string之间的相互转换

    2019独角兽企业重金招聘Python工程师标准>>> c++ 利用stringstream实现int与string类型的相互转换,记录在此,以备后用 #include<ios ...

  3. C# char[]与string之间的相互转换

    string 兑换 Char[] string ss = "abcdefg";char[] cc = ss.ToCharArray(); Char[] 转换成string stri ...

  4. c 串转string_c++ 中 char 与 string 之间的相互转换问题

    string::c_str().string::data()的区别: const value_type *c_str( ) const; const value_type *data( ) const ...

  5. DOM方式进行的XML文件、Document、String之间的相互转换

    http://kingxss.iteye.com/blog/1026954 XML文件test.xml: Xml代码 <?xml version="1.0" encoding ...

  6. JavaSE · 常量介绍 · 变量类型转换 · 理解数值提升 · int 和 Stirng 之间的相互转换

    书接上回 Java 变量介绍 我们继续学习以下内容. 四.常量 字面值常量 final 关键字修饰的常量 五.理解类型转换 int 和 long/double 相互赋值 int 和 boolean 相 ...

  7. PInvoke复习之深入理解char*与wchar_t*与string以及wstring之间的相互转换

    本篇文章是对c++中的char*与wchar_t*与string以及wstring之间的相互转换进行了详细的分析介绍,需要的朋友参考下 #ifndef USE_H_ #define USE_H_ #i ...

  8. 基本数据类型、包装类、String三者之间的相互转换

    package com.wdl.day13;import org.junit.Test;/** 包装类的使用:* 1.java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征** ...

  9. string、char *、char []之间的相互转换

    最近工作中遇到了string.char *.char []之间的相互转换,今天终于抽出时间将他们之间的转换记录下来,使用的是CodeBlocks软件,编译器为GNU GCC compiler,下面看代 ...

最新文章

  1. 【5】python核心编程 第八章-条件和循环
  2. 学习flex布局(弹性布局)
  3. Markdown入门
  4. 【Python】输入两个字符串,在第一字符串中删除第二个字符串中所包含的所有字符...
  5. ONVIF协议网络摄像机(IPC)客户端程序开发(2):第一次使用IPC摄像头
  6. java预览表格预览文档_java 如何创建一个表格.docx
  7. 英国脱欧:3/4的技术初创公司将面临严峻时期
  8. Java开发知识之Java的包装类
  9. js的一些function
  10. mysql-connector-java-5.1.22下载
  11. 微信公众号装b神器生成引流系统源码
  12. 2021年起重机司机(限桥式起重机)考试题及起重机司机(限桥式起重机)报名考试
  13. php gps坐标转换经纬度,GPS坐标(经纬度转换xy坐标算法)
  14. 张正友标定法代码解释
  15. 人工智能、机器学习、深度学习 -- 学习摘记
  16. xp系统从u盘启动计算机,一键u盘装xp系统,教您如何使用U盘装xp系统
  17. Sqilabs第五关注入常用注入方式详解
  18. linux虚拟摄像头 开源,(四) 虚拟摄像头vivi体验
  19. MODBUS报文负数优化处理代码(补码,反码) java
  20. 红帽linux怎么截图,Linux上使用Ksnip截图

热门文章

  1. MongoDB存储基础教程
  2. DFS:C 小Y的难题(1)
  3. 算法:老鼠走迷宫问题
  4. XmlPullParserException
  5. php如何清理网站缓存,php怎么清除opcache缓存
  6. 网络验证php接口逆向,一个专利查错的逆向(网络验证)
  7. php 四维数组_PHP 多维数组
  8. golang jwt设置过期_听说你的JWT库用起来特别扭,推荐这款贼好用的!
  9. python循环结束执行后面代码_计算机程序中某种代码的反复执行,称为________。Python中的循环有重复一定次数的________,也有重复到某种情况结束的________。...
  10. python 音速_webpack多页应用架构系列(十一):预打包Dll,实现webpack音速编译