含义
- 其实就是编码问题
- 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://mediaworld.ukrbb.net/viewtopic.php?f=49&t=5433 .
вывод из запоя на дому ростов недорого http://justforum.bestforums.org/viewtopic.php?f=26&t=4732/ .
казино беларусь казино беларусь .
вывод из запоя на дому ростов domsadremont.ukrbb.net/viewtopic.php?f=3&t=903 .
наркология вывод из запоя ростов наркология вывод из запоя ростов .
Приобретение диплома ПТУ с сокращенной программой обучения в Москве
вывод из запоя на дому ростов цены вывод из запоя на дому ростов цены .
онлайн казино беларусь онлайн казино беларусь .
вывод из запоя цена ростов https://pandora.ukrbb.net/viewtopic.php?f=2&t=12275 .
онлайн казино беларусь онлайн казино беларусь .
вывод из запоя дешево ростов на дону https://www.domsadremont.ukrbb.net/viewtopic.php?f=3&t=903 .
алкоголизм лечение вывод из запоя ростов http://www.zarabotokdoma.creartuforo.com/viewtopic.php?id=11473/ .
онлайн казино беларусь онлайн казино беларусь .
вывод из запоя дешево ростов-на-дону http://dexanet.ukrbb.net/viewtopic.php?f=14&t=20360 .
Your posts are so thought-provoking and often leave me pondering long after I have finished reading Keep challenging your readers to think outside the box
вывод. из. запоя. на. дому. ростов. zarabotokdoma.creartuforo.com/viewtopic.php?id=11473 .
лучшие онлайн казино http://www.casino-bonus.by/ .
вывод из запоя на дому ростов круглосуточно http://superstar.ukrbb.net/viewtopic.php?f=3&t=681/ .
вывод из запоя дешево ростов-на-дону http://www.pokupki.bestforums.org/viewtopic.php?f=7&t=24037 .
вывод из запоя цены ростов-на-дону вывод из запоя цены ростов-на-дону .
вывод. из. запоя. ростов. vishivayu.ukrbb.net/viewtopic.php?f=12&t=13426 .
онлайн казино онлайн казино .
вывод из запоя в ростове pandora.ukrbb.net/viewtopic.php?f=2&t=12275 .
Тут можно преобрести огнестойкий сейф купить несгораемые сейфы
Быстрая схема покупки диплома старого образца: что важно знать?
buy rybelsus buy rybelsus online usa rybpharm
вывод из запоя анонимно ростов http://www.gov.ukrbb.net/viewtopic.php?f=3&t=6371 .
cheapest Kamagra Kam Pharm: kam pharm shop – kam pharm shop
Всё, что нужно знать о покупке аттестата о среднем образовании без рисков
fortune mouse gratis слот
играть в fortune mouse gratis
Тут можно преобрести купить огнестойкий сейф в москве сейф москва огнестойкий купить
Быстрая схема покупки диплома старого образца: что важно знать?
buy furosemide online cheapest lasix lasix
Your blog has quickly become one of my favorites I always look forward to your new posts and the insights they offer
https://kampharm.shop/# kamagra oral jelly
king buffalo
king buffalo скачать
kampharm shop cheapest Kamagra Kam Pharm kamagra oral jelly
Официальное получение диплома техникума с упрощенным обучением в Москве
Тут можно преобрести купить оружейный шкаф оружейный шкаф купить в москве
Как приобрести аттестат о среднем образовании в Москве и других городах
titanic2ship.com/attestat-za-9-klass-kupit-tsena-v-nur-sultane-astane.html
Быстрая схема покупки диплома старого образца: что важно знать?
cheapest Gabapentin GabaPharm: buy gabapentin india – gabapentin GabaPharm