含义
- 其实就是编码问题
- 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
canada drugs online review Licensed Canadian Pharmacy onlinecanadianpharmacy
purple pharmacy mexico price list: cheapest mexico drugs – mexican rx online
mail order pharmacy india http://indiaph24.store/# indian pharmacies safe
world pharmacy india
reputable mexican pharmacies online cheapest mexico drugs п»їbest mexican online pharmacies
buying prescription drugs in mexico online: cheapest mexico drugs – buying from online mexican pharmacy
https://canadaph24.pro/# northwest pharmacy canada
canadian pharmacy prices Certified Canadian Pharmacies canadian world pharmacy
canadian pharmacy: Certified Canadian Pharmacies – cheap canadian pharmacy
mexican border pharmacies shipping to usa: cheapest mexico drugs – purple pharmacy mexico price list
Online medicine home delivery https://indiaph24.store/# indian pharmacy
best online pharmacy india
https://mexicoph24.life/# buying prescription drugs in mexico
https://indiaph24.store/# cheapest online pharmacy india
safe canadian pharmacy canadian pharmacies pet meds without vet prescription canada
mexican rx online cheapest mexico drugs buying prescription drugs in mexico online
pharmacy website india https://indiaph24.store/# top online pharmacy india
best india pharmacy
https://canadaph24.pro/# trusted canadian pharmacy
mexican rx online mexican pharmacy pharmacies in mexico that ship to usa
legitimate canadian pharmacies: Licensed Canadian Pharmacy – legit canadian online pharmacy
https://canadaph24.pro/# best canadian pharmacy to buy from
canadadrugpharmacy com Licensed Canadian Pharmacy my canadian pharmacy
ed meds online canada Prescription Drugs from Canada canadian drug pharmacy
canadian valley pharmacy Large Selection of Medications from Canada canadapharmacyonline com
http://indiaph24.store/# india pharmacy mail order
mail order pharmacy india: indian pharmacy – buy medicines online in india
indian pharmacy indian pharmacy reputable indian pharmacies
canada pharmacy online legit canadian pharmacies canada rx pharmacy world
https://canadaph24.pro/# legitimate canadian mail order pharmacy
mexican mail order pharmacies Online Pharmacies in Mexico mexico pharmacies prescription drugs
recommended canadian pharmacies: Large Selection of Medications from Canada – recommended canadian pharmacies
canada drugs online review Large Selection of Medications from Canada canadian pharmacy ed medications
Online medicine home delivery http://indiaph24.store/# indianpharmacy com
online shopping pharmacy india
indian pharmacies safe http://indiaph24.store/# pharmacy website india
mail order pharmacy india
real canadian pharmacy Certified Canadian Pharmacies cheap canadian pharmacy online
indian pharmacy online https://indiaph24.store/# cheapest online pharmacy india
indianpharmacy com
https://indiaph24.store/# online pharmacy india
buy medicines online in india Generic Medicine India to USA buy medicines online in india
medication from mexico pharmacy: mexican pharmacy – mexico drug stores pharmacies
buy medicines online in india http://indiaph24.store/# top 10 online pharmacy in india
india online pharmacy
trustworthy canadian pharmacy Large Selection of Medications from Canada ed meds online canada
buying from online mexican pharmacy mexico pharmacy mexico pharmacy
https://canadaph24.pro/# my canadian pharmacy review
buy prescription drugs from india http://indiaph24.store/# reputable indian pharmacies
top 10 pharmacies in india
indian pharmacy Generic Medicine India to USA india pharmacy
canadian online drugstore Prescription Drugs from Canada canadian pharmacy store
canadian pharmacies comparison: my canadian pharmacy – canada pharmacy world
Всё о радиаторах отопления https://heat-komfort.ru/ – выбор радиатора, монтаж, обслуживание.
п»їlegitimate online pharmacies india indian pharmacy pharmacy website india
http://indiaph24.store/# п»їlegitimate online pharmacies india
canadian pharmacy cheap my canadian pharmacy canadian pharmacy sarasota
maple leaf pharmacy in canada Prescription Drugs from Canada canadian king pharmacy