UNICODE下memset的使用

2021-06-16 08:49:17 字數 658 閱讀 7606

在多位元組程式中,memset及zeromemory的使用很清楚,如:

char  str[10];

memset(str,0,10)或memset(str,0,sizeof(str));

zeromemory(str,10)或zeromemory(str,sizeof(str))

其中:sizeof(str)==10;

在unicode下,應該這樣用:

tchar  str[10];

memset(str,0,20)或memset(str,0,sizeof(str));

zeromemory(str,20)或zeromemory(str,sizeof(str))

memset(str,'\0',sizeof(str))或memset(str,'\0',20)

memset(str,text('\0'),10*sizeof(tchar));

其中:sizeof(str)==20,str字串分配的記憶體位元組數;若用 wcslen(str),應該是str字串的實際個數(有效字元個數);

在定義時也可以將記憶體清0,如:tchar str[10]=_t("");

tchar str[10]=_t("");

等同於tchar  str[10];

memset(str,0,20);

linux下的memset函式

起因 希望對各種型別的陣列進行初始化,避免野值 memset函式將s所指向的某一塊記憶體中的每個位元組的內容全部設定為ch指定的ascii值,塊的大小由第三個引數指定,這個函式通常為新申請的記憶體做初始化工作,其返回值為指向s的指標。函式標頭檔案 include void memset void s...

Unicode下的CString與char 轉換

在vs2005及以上的環境中,所見工程的預設字符集形式是unicode,而vc6.0中,字符集形式為多位元組字符集 mbcs multi byte character set 這樣導致了許多字元轉換的方法在unicode的環境中不允許使用,強制型別轉換的結果也會變得非常奇怪。如lpctstr與cha...

unicode下資料之間的轉換

首先mfc下字串只有兩種資料 char 乙個位元組 和wchar t 兩個位元組 很多其他資料型別如tchar,wchar等都是這個兩個基本型別的巨集定義,byte是uchar 1 對話方塊列印char char info messageboxa this m hwnd,info,mb ok 2 c...