飛鴿傳書軟體在讀寫檔案時,會遇到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 輸出...