含义
- 其实就是编码问题
- 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://sportandpolitics.ukrbb.net/viewtopic.php?f=24&t=17802 .
Promo Codes home appliances savings https://skidki-i-kupony.ru/ .
вывод из запоя ростов на дону стационар http://www.angelladydety.getbb.ru/viewtopic.php?f=44&t=42909 .
Как приобрести аттестат о среднем образовании в Москве и других городах
https://furpharm.com/# furosemide furpharm.com
I just wanted to take a moment to express my gratitude for the great content you consistently produce. It’s informative, interesting, and always keeps me coming back for more!
Здесь можно преобрести купить сейф сейфы купить
best ed pill ere pharm: erepharm.com – ed pills
https://gabapharm.com/# buy gabapentin online
http://gabapharm.com/# buy gabapentin online
erepharm.com: best ed pill ere pharm – ED pills non prescription
Купить диплом о среднем образовании в Москве и любом другом городе
gabapentin GabaPharm: buy gabapentin india – buy gabapentin
Тут можно преобрести сейф несгораемый купить сейф противопожарный купить
https://erepharm.com/# best ed pills online
Вопросы и ответы: можно ли быстро купить диплом старого образца?
диплом врача цена диплом врача цена .
Здесь можно преобрести сейфы простые сейфы купить
buy rybelsus online usa buy rybelsus rybpharm rybpharm rybelsus
Тут можно преобрести сейф оружейный купить сейф охотничий купить
cheapest Kamagra Kam Pharm buy kamagra oral jelly Kam Pharm buy kamagra oral jelly Kam Pharm
Kam Pharm buy kamagra oral jelly Kam Pharm Kamagra Kam Pharm
https://furpharm.com/# furosemide furpharm.com
https://erepharm.com/# ED meds online with insurance
Парадокс, но купить диплом кандидата наук оказалось не так и сложно
king buffalo
king buffalo скачать
Как официально купить диплом вуза с упрощенным обучением в Москве
saros-center.ru/forum/?PAGE_NAME=profile_view&UID=6040
Приобретение школьного аттестата с официальным упрощенным обучением в Москве
http://rybpharm.com/# buy rybelsus rybpharm
rybpharm canada: buy rybelsus canada – buy rybelsus online usa
http://kampharm.shop/# kampharm.shop
Как приобрести аттестат о среднем образовании в Москве и других городах
GabaPharm Gabapentin: GabaPharm Gabapentin – GabaPharm Gabapentin
furpharm furosemide furpharm.com buy lasix fur pharm
I always find myself nodding along and agreeing with your wise words Your insights and advice are truly valuable
вывод. из. запоя. ростов. на. дону. familyportal.forumrom.com/viewtopic.php?id=28563 .
вывод из запоя ростовская область severussnape.borda.ru/?1-4-0-00000315-000-0-0-1730725155 .
вывод из запоя цены на дому ростов https://zavitai.mybb.social/viewtopic.php?id=88 .
нарколог на дом вывод из запоя на дому нарколог на дом вывод из запоя на дому .
вывод из запоя на дому https://vkontakte.forum.cool/viewtopic.php?id=19611 .
нарколог вывод из запоя ростов нарколог вывод из запоя ростов .
вывод из запоя цена ростов severussnape.borda.ru/?1-4-0-00000315-000-0-0-1730725155 .
вывод из запоя дешево ростов на дону https://www.zavitai.mybb.social/viewtopic.php?id=88 .
вывод из запоя в ростове http://www.chesskomi.borda.ru/?1-8-0-00003044-000-0-0-1730725479/ .
анонимный. вывод. из. запоя. ростов. automobilist.forum24.ru/?1-19-0-00000137-000-0-0-1730725245 .
Тут можно преобрести сейф несгораемый купить огнестойкие сейфы купить
вывод из запоя в ростове на дону http://www.chesskomi.borda.ru/?1-8-0-00003044-000-0-0-1730725479 .
вывод из запоя дешево ростов http://odessaforum.0pk.me/viewtopic.php?id=10053/ .
вывод из запоя на дому ростов http://www.familyportal.forumrom.com/viewtopic.php?id=28563 .
вывод из запоя на дому ростов ya.7bb.ru/viewtopic.php?id=14600 .