C++解决:不存在从 “std::string” 到 “LPCWSTR” 的适当转换函数

@TOCC++解决:不存在从 “std::string” 到 “LPCWSTR” 的适当转换函数
解决办法如下:

//orig为输入的string字符串

#include <string>
#include <iostream>
#include<cstdlib>
typedef const wchar_t* LPCWSTR;//#include<winnt.h>
using namespace std;
LPCWSTR stringToLPCWSTR(string orig)
{
	size_t origsize = orig.length() + 1;
	const size_t newsize = 100;
	size_t convertedChars = 0;
	wchar_t* wcstring = new wchar_t[sizeof(wchar_t) * (orig.length() - 1)];
	mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);
	return wcstring;
}
int main()
{
	string in= "this is a txt!";
	LPCWSTR out = stringToLPCWSTR(in);
	wcout << out << endl;
	//别忘了释放内存~
	delete out;
	out = nullptr;
	return 0;
}

结果如图:
在这里插入图片描述

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
std::string和LPCWSTR之间的转换可以通过使用MultiByteToWideChar函数来实现。这个函数可以将多字节字符转换为宽字符。你可以使用下面的代码示例来进行转换: ```cpp std::string str = "abc"; int size = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0); wchar_t* wstr = new wchar_t\[size\]; MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, wstr, size); LPCWSTR lpcwstr = wstr; ``` 这段代码将std::string类型的str转换为LPCWSTR类型的lpcwstr。首先,我们使用MultiByteToWideChar函数获取转换后的宽字符数组的大小。然后,我们创建一个wchar_t类型的数组wstr来存储转换后的宽字符。最后,我们将wstr赋值给LPCWSTR类型的lpcwstr。 请注意,这里使用的是UTF-8编码,如果你的std::string使用的是其他编码,你需要相应地修改MultiByteToWideChar函数的第一个参数。 希望这个回答对你有帮助! #### 引用[.reference_title] - *1* [std字符串转LPCSTR、LPCWSTR](https://blog.csdn.net/spenghui/article/details/42524845)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C++std::string转换为LPCWSTR](https://blog.csdn.net/weixin_34194702/article/details/93199145)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值