含义
- 其实就是编码问题
- 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
Тут можно преобрести ящик для оружия купить купить оружейный сейф цена
denemebonusuverensiteler.top: deneme bonusu veren siteler mycbet.com – deneme bonusu veren siteler betturkey
Canl? Casino Siteleri: Casino Siteleri – Casino Siteleri
Легальная покупка диплома ПТУ с сокращенной программой обучения
электрокарнизы http://www.elektrokarniz-dlya-shtor15.ru/ .
вызов нарколога на дом в екатеринбурге вызов нарколога на дом в екатеринбурге .
instagram stories anonymous instagram stories anonymous .
Тут можно преобрести сейф огнестойкий несгораемый сейф
Best coupons for electronics https://www.skidki-i-kupony.ru .
цены нарколога на дом в екатеринбурге цены нарколога на дом в екатеринбурге .
matadorbet giris matadorbet matadorbet giris
Тут можно сейфы для дома доставка купить сейф москва для дома
deneme bonusu veren siteler http://casinositeleri.win/# Casino Siteleri
Узнайте, как приобрести диплом о высшем образовании без рисков
Полезные советы по безопасной покупке диплома о высшем образовании
Casino Siteleri: Casino Siteleri – Canl? Casino Siteleri
Тут можно купить сейф для дома купить сейфы для дома
http://matadorbet.bid/# matadorbet bid
deneme bonusu veren siteler mycbet.com
matadorbet bid matadorbet bid matadorbet.bid
deneme bonusu veren siteler http://ultrabet-tr.online/# ultrabet guncel
ultrabet bonus: ultrabet guncel – ultrabet bonus
deneme bonusu veren siteler yeni deneme bonusu veren siteler denemebonusu2026.com deneme bonusu veren siteler betturkey betturkey.com
Canl? Casino Siteleri: Canl? Casino Siteleri – Canl? Casino Siteleri
deneme bonusu veren siteler betturkey betturkey.com https://casinositeleri.win/# Casino Siteleri
http://denemebonusuverensiteler.top/# deneme bonusu veren siteler yeni
deneme bonusu veren siteler betturkey
http://matadorbet.bid/# matadorbet.bid
deneme bonusu veren siteler betturkey
ultrabet giris: ultrabet yeni giris 1125 – ultrabet giris
slot oyunlar? puf noktalar?: en cok kazand?ran slot oyunlar? – slot siteleri
Casino Siteleri guvenilir casino siteleri Canl? Casino Siteleri
aviator играaviator на деньгиaviator играть на деньгислот aviator на деньгиaviator money game
aviator играaviator на деньгиaviator играть на деньгислот aviator на деньгиaviator money game
deneme bonusu veren siteler yeni https://slot-tr.online/# en kazancl? slot oyunlar?
slot tr online: slot siteleri – slot oyunlar? puf noktalar?
Сколько стоит диплом высшего и среднего образования и как это происходит?
Реально ли приобрести диплом стоматолога? Основные шаги
Как купить диплом о высшем образовании с минимальными рисками
Тут можно сейфы для дома цена домашний сейф
denemebonusuverensiteler.top http://denemebonusuverensiteler.top/# deneme bonusu veren siteler
en cok kazand?ran slot oyunlar? en cok kazand?ran slot oyunlar? slot oyunlar? puf noktalar?
Casino Siteleri: Deneme Bonusu Veren Siteler – casino siteleri win
en kazancl? slot oyunlar? en cok kazand?ran slot oyunlar? slot oyunlar? puf noktalar?
Как избежать рисков при покупке диплома колледжа или ПТУ в России
купить диплом просто prema365-diploms.ru .
вывод из запоя челябинск [url=vyvod-iz-zapoya-chelyabinsk13.ru]вывод из запоя челябинск[/url] .
вывод из алкогольного запоя на дому [url=www.vyvod-iz-zapoya-ekaterinburg21.ru/]вывод из алкогольного запоя на дому[/url] .
вывести из запоя врачом наркологом на дому [url=https://vyvod-iz-zapoya-chelyabinsk12.ru/]вывести из запоя врачом наркологом на дому[/url] .
можно ли в колледже купить диплом можно ли в колледже купить диплом .
Как избежать рисков при покупке диплома колледжа или ПТУ в России
диплом купит заказать prem-diplom77.ru .
Тут можно преобрести сейф несгораемый купить сейф огнестойкий в москве
Тут можно сейфы для дома цены в москве купить домашний сейф в интернет магазине