C++ wstring 与 string 之间的相互转换.
方式一:调用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 之间的相互转换.相关推荐
- Java中List和数组Array和String之间的相互转换
Java中List和数组Array和String之间的相互转换 之前面试的时候遇到一个问题,先给大家分享一下.问:我想分别得到list,string和数组的长度,我能通过什么代码来得到? 这个问题先留 ...
- C++实现int与string之间的相互转换
2019独角兽企业重金招聘Python工程师标准>>> c++ 利用stringstream实现int与string类型的相互转换,记录在此,以备后用 #include<ios ...
- C# char[]与string之间的相互转换
string 兑换 Char[] string ss = "abcdefg";char[] cc = ss.ToCharArray(); Char[] 转换成string stri ...
- c 串转string_c++ 中 char 与 string 之间的相互转换问题
string::c_str().string::data()的区别: const value_type *c_str( ) const; const value_type *data( ) const ...
- DOM方式进行的XML文件、Document、String之间的相互转换
http://kingxss.iteye.com/blog/1026954 XML文件test.xml: Xml代码 <?xml version="1.0" encoding ...
- JavaSE · 常量介绍 · 变量类型转换 · 理解数值提升 · int 和 Stirng 之间的相互转换
书接上回 Java 变量介绍 我们继续学习以下内容. 四.常量 字面值常量 final 关键字修饰的常量 五.理解类型转换 int 和 long/double 相互赋值 int 和 boolean 相 ...
- PInvoke复习之深入理解char*与wchar_t*与string以及wstring之间的相互转换
本篇文章是对c++中的char*与wchar_t*与string以及wstring之间的相互转换进行了详细的分析介绍,需要的朋友参考下 #ifndef USE_H_ #define USE_H_ #i ...
- 基本数据类型、包装类、String三者之间的相互转换
package com.wdl.day13;import org.junit.Test;/** 包装类的使用:* 1.java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征** ...
- string、char *、char []之间的相互转换
最近工作中遇到了string.char *.char []之间的相互转换,今天终于抽出时间将他们之间的转换记录下来,使用的是CodeBlocks软件,编译器为GNU GCC compiler,下面看代 ...
最新文章
- 【5】python核心编程 第八章-条件和循环
- 学习flex布局(弹性布局)
- Markdown入门
- 【Python】输入两个字符串,在第一字符串中删除第二个字符串中所包含的所有字符...
- ONVIF协议网络摄像机(IPC)客户端程序开发(2):第一次使用IPC摄像头
- java预览表格预览文档_java 如何创建一个表格.docx
- 英国脱欧:3/4的技术初创公司将面临严峻时期
- Java开发知识之Java的包装类
- js的一些function
- mysql-connector-java-5.1.22下载
- 微信公众号装b神器生成引流系统源码
- 2021年起重机司机(限桥式起重机)考试题及起重机司机(限桥式起重机)报名考试
- php gps坐标转换经纬度,GPS坐标(经纬度转换xy坐标算法)
- 张正友标定法代码解释
- 人工智能、机器学习、深度学习 -- 学习摘记
- xp系统从u盘启动计算机,一键u盘装xp系统,教您如何使用U盘装xp系统
- Sqilabs第五关注入常用注入方式详解
- linux虚拟摄像头 开源,(四) 虚拟摄像头vivi体验
- MODBUS报文负数优化处理代码(补码,反码) java
- 红帽linux怎么截图,Linux上使用Ksnip截图
热门文章
- MongoDB存储基础教程
- DFS:C 小Y的难题(1)
- 算法:老鼠走迷宫问题
- XmlPullParserException
- php如何清理网站缓存,php怎么清除opcache缓存
- 网络验证php接口逆向,一个专利查错的逆向(网络验证)
- php 四维数组_PHP 多维数组
- golang jwt设置过期_听说你的JWT库用起来特别扭,推荐这款贼好用的!
- python循环结束执行后面代码_计算机程序中某种代码的反复执行,称为________。Python中的循环有重复一定次数的________,也有重复到某种情况结束的________。...
- python 音速_webpack多页应用架构系列(十一):预打包Dll,实现webpack音速编译