字符/字符串中一些需要注意的点

2018-01-21  本文已影响0人  7bfedbe4863a
基本准则
int MultiByteToWideChar(
  _In_      UINT   CodePage,//标识了与多字节字符串关联的一个代码页值
  _In_      DWORD  dwFlags,//额外的控制,一般不使用这个标识,所以传0
  _In_      LPCSTR lpMultiByteStr,//要转换的字符串
  _In_      int    cbMultiByte,//指定字符串的长度(如果是-1,则函数自动判断源字符串的长度)
  _Out_opt_ LPWSTR lpWideCharStr,//指定Unicode版本的字符串写入内存缓冲区的地址
  _In_      int    cchWideChar//制定要写入的缓冲区的最大长度。(如果这个参数传0,那么函数就不会执行转换,而是返回一个宽字符(包括终止符),只有缓冲区能够容纳该数量的宽字符,转换才会成功)
);
int WideCharToMultiByte(
  _In_      UINT    CodePage,
  _In_      DWORD   dwFlags,
  _In_      LPCWSTR lpWideCharStr,
  _In_      int     cchWideChar,
  _Out_opt_ LPSTR   lpMultiByteStr,
  _In_      int     cbMultiByte,
  _In_opt_  LPCSTR  lpDefaultChar,//如果遇到不能转换的宽字符,函数就会使用一个这个参数指向的字符,而不是系统默认的字符(通常是?,超级不安全)。
  _Out_opt_ LPBOOL  lpUsedDefaultChar//如果至少有一个字符不能转换为对应的多字节形式,那么这个参数就会被设为TRUE;所有都转换成功,这个变量就会被设为FALSE。这个参数通常传NULL。
);
字符串操作准则
int CompareString(
  _In_ LCID    Locale,//指定一个区域设置ID(一个32位值),用来标识一种语言。
  _In_ DWORD   dwCmpFlags,//一组标志,比较字符串时的方法。
  _In_ LPCTSTR lpString1,
  _In_ int     cchCount1,
  _In_ LPCTSTR lpString2,
  _In_ int     cchCount2
);
int CompareStringEx(
  _In_opt_ LPCWSTR          lpLocaleName,
  _In_     DWORD            dwCmpFlags,
  _In_     LPCWSTR          lpString1,
  _In_     int              cchCount1,
  _In_     LPCWSTR          lpString2,
  _In_     int              cchCount2,
  _In_opt_ LPNLSVERSIONINFO lpVersionInformation,
  _In_opt_ LPVOID           lpReserved,
  _In_opt_ LPARAM           lParam
);

上一篇 下一篇

猜你喜欢

热点阅读