std::wstring的相关转换集锦

17 篇文章 5 订阅

1、std::wstring转为std::string

    #include <Windows.h>
    std::string MyClass::WStringToSString(std::wstring fileName) 
	{
 	int nLen = WideCharToMultiByte(CP_ACP, 0, fileName.c_str(), -1, NULL, 0, NULL, 	 NULL); 
	std::string strTemp = ""; 
	if (nLen == 0)
		return strTemp ; 
	strTemp.resize(nLen - 1, 0); 
	WideCharToMultiByte(CP_ACP, 0, fileName.c_str(), -1, (char*)strTemp.c_str(), nLen, NULL, NULL); 
	return strTemp; 
    } 

2、Qt方法wstring转成 const char*

	std::wstring wstrTemp;
	QString strTemp = QString::fromStdWString(wstrTemp); 
	QByteArray arrayTemp = strTemp.toLocal8Bit();  
	arrayTemp.constData(); //const char*

3、wstring转成char*

参考链接:https://blog.csdn.net/cll131421/article/details/7963446

#include <xstring>
#include <iostream>
#include <comdef.h>
 
using namespace std;
 
char* ws2s(const wstring& ws)
{
 _bstr_t t = ws.c_str(); 
 char* pchar = (char*)t; 
 string result = pchar;
 char* charTmp = new char;
 strcpy(charTmp,result.c_str());
 pchar = NULL;
 delete pchar;
 return charTmp;
}

4、const char*转换成wstring类型

参考链接:https://blog.csdn.net/cqltbe131421/article/details/52597813

std::wstring CATOW(const char* lpcszString)//返回值类型是wstring类型
{
 int unicodeLen = ::MultiByteToWideChar(CP_ACP, 0, lpcszString, -1, NULL, 0);//获取字符串长度


 wchar_t* pUnicode = new wchar_t[unicodeLen + 1];//开辟宽字节内存
 memset(pUnicode, 0, (unicodeLen + 1) * sizeof(wchar_t));//清空


 ::MultiByteToWideChar(CP_ACP, 0, lpcszString, -1, (LPWSTR)pUnicode, unicodeLen);//转换
 std::wstring wString = (wchar_t*)pUnicode;//强转后赋值给返回变量
 delete[] pUnicode;
 return wString;
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值