全球首臺全自動鼻咽拭子取樣機器人亮相服貿會,實現核酸檢測無人化
阿新 • • 發佈:2021-09-05
C++字串
-
窄位元組
char、char*、 const char* CHAR、 (PCHAR、PSTR、LPSTR)、LPCSTR
-
Unicode寬位元組
wchar_t、 wchar_t*、 const wchar_t* WCHAR、 (PWCHAR、PWSTR、LPWSTR)、LPCWSTR
-
T 通用型別
TCHAR、(TCHAR*、 PTCHAR、PTSTR、LPTSTR)、LPCTSTR
其中:P代表指標的意思,STR代表字串的意思,L是長指標的意思,在WIN32平臺下可以忽略,C代表const常量的意思,W代表wide寬位元組的意思,T理解為通用型別。就是根據專案中是否定義_UNICODE巨集,有則表示寬位元組編碼,定義成wchar_t,否則就是窄位元組編碼,定義為char型別。
計算寬窄字串位元組
窄字元:strlen(p_str) + 1.
寬字元:(wcslen(p_str) + 1) * sizeof(wchar_t)
寬窄位元組字串的轉換
WideCharToMultiByte實現寬位元組轉換到窄位元組
MultiByteToWideChar實現窄位元組轉換到寬位元組
示例:
//將單位元組char*轉化為寬位元組wchar_t* int AnsiToUnicode(const char* szStr, wchar_t *szStrDst) { int nLen = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szStr, -1, NULL, 0); if (nLen == 0) { return nLen; } MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szStr, -1, szStrDst, nLen); return nLen; } ///寬位元組wchar_t轉為單位元組 char* UnicodeToAnsi(const wchar_t* szStr) { int nLen = WideCharToMultiByte(CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL); if (nLen == 0) { return NULL; } char* pResult = new char[nLen]; WideCharToMultiByte(CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL); return pResult; }