CStdioFile實現完美支援UNICODE方案

2021-06-21 23:55:43 字數 2475 閱讀 6481

飛鴿傳書軟體在讀寫檔案時,會遇到unicode的檔案,怎麼辦呢?這個給大家乙個cstdiofile實現完美支援unicode方案,先放著以後可能會用到。

// 目標檔案路徑名稱的巨集定義   

#define fileurl _t("c:")   

//   

// 將「單位元組的字串符型別(_msbc環境)」轉換為「寬位元組的字串型別(unicode環境)」   

//   

int _msbcto_unicode(cstring strinput_msbc, cstring *stroutput_unicode)   

pcbuf = (char *)strinput_msbc.getbuffer(strinput_msbc.getlength());   

nlen = multibytetowidechar(cp_acp, 0, pcbuf, -1, null, 0);   

// (unicode環境wchar需要加1,預設已經加1了)   

wchar *pwbuf = new wchar[nlen];   

memset(pwbuf, 0, nlen);   

multibytetowidechar(cp_acp, 0, pcbuf, -1, pwbuf, nlen);   

stroutput_unicode->format(_t("%s"), pwbuf);   

delete pwbuf;   

nlen -= 1;   

return nlen;   

}   

//   

// 將「寬位元組的字串型別(unicode環境)」轉換為「單位元組的字串符型別(_msbc環境)」   

//   

int _unicodeto_msbc(cstring strinput_unicode, cstring *stroutput_msbc)   

pwbuf = strinput_unicode.getbuffer(strinput_unicode.getlength());   

nlen = widechartomultibyte(cp_acp, 0, pwbuf, -1, null, 0, null, null);   

// (unicode環境需要加2,不然format時記憶體資料格式不對程式會崩)   

char *pcbuf = new char[nlen + 2];   

memset(pcbuf, 0, nlen + 2);   

widechartomultibyte(cp_acp, 0, pwbuf, -1, pcbuf, nlen, null, null);   

stroutput_msbc->format(_t("%s"), pcbuf);   

delete pcbuf;   

nlen -= 1;   

return nlen;   

}   

//   

// 將儲存成「寬位元組型別」的「單位元組型別」字串(unicode環境),   

// 還原為正確的「單位元組型別」字串(_msbc環境)。   

//   

void _unicodeof_msbcto_msbc(cstring *str)   

str->format(_t("%s"), pcbuf);   

delete pcbuf;   

}   

//   

// 使用「cstdiofile」類進行讀檔案操作   

//   

void stdioreadfile()   

// 按行來迴圈讀檔案   

do   

}while(str_msbc != _t(""));   

openfiler.close();   

}   

//   

// 使用「cstdiofile」類進行寫檔案操作   

//   

void stdiowritefile()   

else   

}   

else   

if(!openfilew.open(fileurl, cfile::modewrite))   

str_unicode = _t("coderui您好!/n");   

// 將「寬位元組的字串型別(unicode環境)」轉換為「單位元組的字串符型別(_msbc環境)」   

nlength = _unicodeto_msbc(str_unicode, &str_msbc);   

openfilew.seektoend();   

openfilew.write(str_msbc, nlength); // 寫入「單位元組型別的字串符(_msbc環境)」   

openfilew.close();   

}   

原文:cstdiofile實現完美支援unicode方案 

ListView 分組完美實現

專案中需要用到分組列表,資料為動態,apidemo中的例子不能滿足要求。而expandlistview存在收起時才能重新整理的問題 專案要求不能收起 雖然實現了,但是很不爽。最後自己實現了乙個。section 組頭 row 組所屬行 public abstract class groupbasead...

CListCtrl透明完美實現

實現步驟如下 1 把clistctrl子類化 2 在ide中把clistctrl的transparent核取方塊勾上。3 實現wm parentnotify,如下 void cmylistctrl onparentnotify uint message,lparam lparam szfilenam...

JS 實現完美include

js為什麼需要include?讓我們想想這樣1個場景,a.js 需要用到1個公用的common.js,當然你可以在用到a.js的頁面使用 或者 var s document.createelement script s.src head.insertafter s,document.write 輸出...