Windows lpUsedDefaultChar何时为真?
我正在尝试理解WideCharToMultiByte,我想知道lpUsedDefaultChar何时设置为TRUE 下面是一个示例:lpszW应该是什么才能将标志设置为trueWindows lpUsedDefaultChar何时为真?,windows,winapi,unicode,mfc,Windows,Winapi,Unicode,Mfc,我正在尝试理解WideCharToMultiByte,我想知道lpUsedDefaultChar何时设置为TRUE 下面是一个示例:lpszW应该是什么才能将标志设置为true lpszW = L”__WHAT SHOULD_BE_HERE__”; int c = ??; BOOL fUsedDefaultChar = false; DWORD dwSize = WideCharToMultiByte(CP_ACP, 0, lpszW, c, myOutStr ,myOutLen, NULL,
lpszW = L”__WHAT SHOULD_BE_HERE__”;
int c = ??;
BOOL fUsedDefaultChar = false;
DWORD dwSize = WideCharToMultiByte(CP_ACP, 0, lpszW, c, myOutStr ,myOutLen, NULL, &fUsedDefaultChar);
任何了解Unicode/UTF内容的书籍/教程都会很棒
谢谢 当前代码页中不存在的任何内容都将映射到?(默认情况下)和UsedDefaultChar将为!=错 可能是unicode中最常见的代码页和大多数字符 例如,它可能不存在于当前代码页中,因此不会映射到有效的窄字符:
BOOL fUsedDefaultChar=FALSE;
DWORD dwSize;
char myOutStr[MAX_PATH];
WCHAR lpszW[10]=L"Hello";
*lpszW=0x2126; //ohm sign, you could also use the \u2126 syntax if your compiler supports it.
dwSize = WideCharToMultiByte(CP_ACP, 0, lpszW, -1, myOutStr ,MAX_PATH, NULL, &fUsedDefaultChar);
printf("%d %s\n",fUsedDefaultChar,myOutStr); //This prints "1 ?ello" on my system
当lpUsedDefaultChar
设置为TRUE时,非常清楚:
lpDefaultChar[in]可选。指针
要使用的字符(如果是字符)
无法在指定的
代码页。应用程序将设置此
如果函数为空,则将参数设置为NULL
使用系统默认值。到
获取系统默认字符,
应用程序可以调用GetCPInfo
或getcpinfo函数
lpUsedDefaultChar[out]可选。
指向一个标志的指针,该标志指示
该函数使用了默认值
转换中的字符。旗帜
如果一个或多个
无法删除源字符串中的字符
以指定的代码表示
页否则,该标志将设置为
错。此参数可以设置为
空
在我看来,这并没有留下太多误解的余地。谢谢安德斯,我应该把这个问题写得更好。如果我传入一个字符串L“abc\x0100”,我仍然得到fUsedDefaultChar==true。确切的范围是多少?@tvr:没有确切的范围,因为它取决于您转换到的代码页,但任何东西都可以