含义
- 其实就是编码问题
- A:
- 代表ANSI
- W:
- 代表宽字节(wide),即 Unicode
- A:
- 一般win的库函数如果后面不加 ’A‘ 或 'W' 时,直接给它传字符串类型值时会报错:
- 以我常用的 ShellExecute() 为例:
- 会报错:
- "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容
- 不存在从 “std::string” 到 “LPCWSTR” 的适当转换函数
- LPCWSTR 是个啥?让我们来看看它的定义:
- typedef const wchar_t* LPCWSTR;
- 即指向unicode编码字符串的32位指针,并且所指向字符串是wchar,而非char。
- 解决方法:
- 把函数改为 ShellExecuteA() 或 ShellExecuteW()
- 或者在传字符串时使用宏定义转换类型
- 对于常量字符串:
- _T() (推荐使用)自适应转换,当程序定义为unicode时,相当于L,当程序定义为ansi时,则被忽略(头文件:#include <tchar.h>)
- L ;例如原本传值为 fun("open"),使用后为fun(L"open");注意这个L并没有括号。
- CA2W() 从宽字符集(Unicode)转为多字符集(ANSI)(头文件:#include <atlstr.h>)
- CW2A() 从多字符集(ANSI)转化为宽字符集(Unicode)(头文件:#include <atlstr.h>)
- 对于string / char[] / const char[] :
- 使用以下函数
LPCWSTR stringToLPCWSTR(const std::string& orig)
{
size_t origsize = orig.length() + 1;
const size_t newsize = 100;
size_t convertedChars = 0;
wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(orig.length()-1));
mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);
return wcstring;
}
- -
- -
- 那么如果我是 char[] 或者 const char[] 呢?那当然是转string再使用上面的函数啦。
- 示例:
- -
ShellExecuteA(NULL, "open", "https://blog.coolight.cool/", NULL, NULL, SW_SHOWNORMAL);
string str = "https://blog.coolight.cool/";
ShellExecute(NULL, _T("open"), stringToLPCWSTR(str), NULL, NULL, SW_SHOWNORMAL);
const char link_char[] = "https://blog.coolight.cool/";
ShellExecute(NULL, _T("open"), stringToLPCWSTR(string(link_char)), NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, L"open", CA2W("https://blog.coolight.cool/"), NULL, NULL, SW_SHOWNORMAL);
常见编码格式
见另一篇文章:常见编码格式 / 字节序(大端 / 小端)/ 带BOM
вывод из запоя в стационаре ростов-на-дону http://www.cah.forum24.ru/?1-19-0-00000457-000-0-0-1730725499/ .
вывод из запоя цены на дому ростов http://odessaforum.0pk.me/viewtopic.php?id=10053/ .
вывод из запоя дешево ростов-на-дону familyportal.forumrom.com/viewtopic.php?id=28563 .
вывод. из. запоя. анонимно. ростов. ya.7bb.ru/viewtopic.php?id=14600 .
Как избежать рисков при покупке диплома колледжа или ПТУ в России
t98223u0.beget.tech/2024/10/20/legkiy-put-k-diplomu.html
вывод из запоя в стационаре ростов http://spilkuvannya.rolevaya.com/viewtopic.php?id=65/ .
вывод из запоя на дому в ростове вывод из запоя на дому в ростове .
вывод из запоя дешево ростов-на-дону http://www.masa.forum24.ru/?1-16-0-00002625-000-0-0-1730725831/ .
вывод из запоя ростовская область automobilist.forum24.ru/?1-19-0-00000137-000-0-0-1730725245 .
furosemide furpharm.com furpharm furosemide furpharm.com
buy rybelsus rybpharm rybpharm cheap semaglutide buy rybelsus online usa
вывод из запоя ростов http://www.aktivnoe.forum24.ru/?1-7-0-00012822-000-0-0-1730725137/ .
https://furpharm.com/# lasix
вывод из запоя стационарно ростов вывод из запоя стационарно ростов .
анонимный. вывод. из. запоя. ростов. http://www.flanrp.rolevaya.com/viewtopic.php?id=145 .
вывод из запоя ростов и область http://www.www.bisound.com/forum/showthread.php?p=1217039 .
вывод из запоя на дому ростов вывод из запоя на дому ростов .
https://rybpharm.com/# buy rybelsus canada
Тут можно преобрести огнестойкие сейфы огнеупорные сейфы
https://gabapharm.com/# GabaPharm Gabapentin
https://kampharm.shop/# kamagra
Сервисный центр предлагает центр ремонта холодильника smeg центр ремонта холодильника smeg
Сервисный центр предлагает починить ноутбука toshiba починить ноутбука toshiba
Стоимость дипломов высшего и среднего образования и процесс их получения
Как приобрести аттестат о среднем образовании в Москве и других городах
ED pills non prescription: erepharm pills – ere pharm
Your blog has become my go-to source for inspiration and motivation I am so grateful for the valuable content you provide
https://rybpharm.com/# rybpharm
erepharm pills: ED pills non prescription – buy ed pills
furosemide fur pharm: furosemide – lasix
fur pharm furosemide fur pharm buy furosemide online
https://furpharm.com/# fur pharm
Hi everyone, it’s my first pay a quick visit at this website, and piece of writing is actually fruitful for me, keep up posting these content.
регистрация битц казино
Buy gabapentin for humans buy gabapentin india Buy gabapentin for humans
buy rybelsus canada rybpharm buy rybelsus online usa
Быстрая покупка диплома старого образца: возможные риски
Right now it sounds like Movable Type is the top blogging platform available right now. (from what I’ve read) Is that what you are using on your blog?
регистрация казино либет
https://rybpharm.com/# rybpharm cheap semaglutide
Приобретение диплома ПТУ с сокращенной программой обучения в Москве
http://kampharm.shop/# kampharm.shop
Do you have a spam issue on this site; I also am a blogger, and I was wanting to know your situation; we have created some nice practices and we are looking to trade techniques with others, be sure to shoot me an email if interested.
зеркало банда казино
Тут можно преобрести сейф для пистолета и ружья сейф для оружия ружья
Kamagra Kam Pharm: kamagra – kampharm shop
https://gabapharm.com/# cheapest Gabapentin GabaPharm
https://erepharm.com/# erepharm pills
Kam Pharm: Kamagra Kam Pharm – kamagra oral jelly
Buy gabapentin for humans: buy gabapentin india – gabapentin
buy ed pills ED pills non prescription ere pharm
Тут можно преобрести сейф огнестойкий купить сейф противопожарный
Где и как купить диплом о высшем образовании без лишних рисков