含义
- 其实就是编码问题
- 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
Официальная покупка диплома ПТУ с упрощенной программой обучения
Полезные советы по покупке диплома о высшем образовании без риска
Тут можно преобрести несгораемый сейф цена сейф огнестойкий цена
ere pharm best ed pill ere pharm ED meds online
furosemide furpharm.com furosemide furpharm.com lasix
http://furpharm.com/# furpharm
https://rybpharm.com/# rybpharm
http://erepharm.com/# ere pharm
Тут можно преобрести сейф для оружия в москве купить оружейный сейф для пистолета
best ed pill ere pharm: ere pharm – buy ed pills
топ франшиз 2024 топ франшиз 2024 .
продажа франшизы продажа франшизы .
франшизы 2023 франшизы 2023 .
купить франшизу для малого бизнеса купить франшизу для малого бизнеса .
https://furpharm.com/# cheapest lasix
франшиза недорого http://www.franshizy18.ru .
ahfyibps ahfyibps .
франшизы, которые реально работают франшизы, которые реально работают .
франчайзинг купить франчайзинг купить .
Покупка диплома о среднем полном образовании: как избежать мошенничества?
вывод. из. запоя. ростов. на. дону. http://krut.forumno.com/viewtopic.php?id=6023 .
франшизы в россии франшизы в россии .
сайт франшиз сайт франшиз .
купить франшизу каталог http://franshizy22.ru .
сколько стоит купить франшизу сколько стоит купить франшизу .
как купить франшизу как купить франшизу .
франшиза каталог франшиза каталог .
вывод из запоя стационарно ростов вывод из запоя стационарно ростов .
франшиза для начинающих http://franshizy21.ru/ .
buy rybelsus online usa: buy rybelsus rybpharm – rybpharm rybelsus
вывод из запоя ростов на дону стационар https://www.krasnogorsk.anihub.me/viewtopic.php?id=2566 .
популярные франшизы популярные франшизы .
франщиза франщиза .
франшизы в россии франшизы в россии .
топ франшиза franshizy21.ru .
вывод из запоя круглосуточно ideya.forums.party/viewtopic.php?id=653 .
ED meds online with insurance: erepharm pills – erepharm.com
вывод из запоя на дому ростов недорого http://mozaisk.anihub.me/viewtopic.php?id=4366/ .
erepharm.com erepharm.com ED pills non prescription
Тут можно преобрести несгораемый сейф купить огнеупорные сейфы
Как безопасно купить диплом колледжа или ПТУ в России, что важно знать
http://erepharm.com/# cheapest ed pills ere pharm
Пошаговая инструкция по безопасной покупке диплома о высшем образовании
sssr.flybb.ru/viewtopic.php?f=2&t=504
furosemide fur pharm fur pharm lasix
furosemide furpharm furpharm
https://gabapharm.com/# buy Gabapentin GabaPharm
Тут можно преобрести купить сейф оружейный купить сейф под оружие
Сервисный центр предлагает срочный ремонт объективов sony отремонтировать объектива sony
http://rybpharm.com/# buy rybelsus online usa
Как избежать рисков при покупке диплома колледжа или ПТУ в России