1. 程式人生 > 其它 >電話機器人好用嗎?

電話機器人好用嗎?

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;
}