c++ - 如何检测 W2A 转换是否完全成功

标签 c++ visual-c++ unicode mfc atl

Here 你可以看到当你从 Wide 转换为 Narrow 时,一些符号可能会被替换为 ?。当 W2A 转换应用于字符串时如何检测这些情况。往返转换是一种方式,但速度不快。我想在转换 W2A 函数时应该以某种方式标记转换不是完全可能的。如何获取这些信息?

编辑:例如

int WideCharToMultiByte(
  UINT CodePage, 
  DWORD dwFlags, 
  LPCWSTR lpWideCharStr, 
  int cchWideChar, 
  LPSTR lpMultiByteStr, 
  int cbMultiByte, 
  LPCSTR lpDefaultChar, 
  LPBOOL lpUsedDefaultChar 
);

最后一个参数告诉我需要什么。 W2A 呢?如何破案?

最佳答案

要检查这一点,请使用 WideCharToMultiByte直接地。您有指示在那里使用了默认字符,并且您有影响转换过程的标志。

W2A 使用相同的 API,其中 dwFlags 为零,lpUsedDefaultChar 为 NULL,因此根本不会查询您需要的信息。

关于c++ - 如何检测 W2A 转换是否完全成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13469211/

相关文章:

c++ - 移位编译器错误或极端情况?

c++ - 使用可变参数模板制作类似元组的编译时 "linked-list"

c++ - Vector中如何使用复制功能?

Python:如何连接字符串和 Unicode?

python - 这个字符 - ㎜ - 引发 UnicodeEncodeError

c++ - 处理 C++ "initialized but not referenced"警告以销毁作用域助手?

c++ - 如何在 QT 中逐步加载小部件?

c++ - 访问程序中的符号表以打印结构的字段名称

c# - 从 native 可视化 C++ 代码调用 C# .dll

python - 为什么同样的字符串在python2和python3中print的输出不同?