推薦的字元處理方式

2021-05-26 01:04:26 字數 680 閱讀 1636

應用程式應該轉換為支援unicode的形式,應該遵循的基本準則如下:

1,開始將文字字串想象為字元的陣列,而不是char或位元組的陣列。

2,用通用資料型別,如tchar / ptstr,來表示文字字元和字串。

3,用明確的資料型別,如byte和pbyte來表示位元組、位元組指標和資料緩衝區。

4,用text或_t巨集來表示字面量字元和字串,但為保持一致性和更好的可讀性,不要兩都混用。

5,執行全域性替換,如用ptstr替換pstr

6,修改與字串有關的計算,如函式經常希望我們傳給它緩衝區大小的字元數,而不是位元組數。這意味著我們應該傳入_countof(szbyffer),而不是sizeof(szbuffer)。而且,如果需要為乙個字串分配乙個記憶體塊,而且知道字元中的字元數,那麼要記住記憶體是以位元組來分配的。這意味著我們必須呼叫malloc(nchar * sizeof(tchar)),而不是呼叫malloc(nchar)。如果出錯,編譯器將不會提供任何警告或錯誤資訊,所以最好定義乙個巨集來避免犯錯:#define chmalloc(nchar)  (tchar*)malloc(nchar * sizeof(tchar))

7,避免使用printf系列函式,尤其不要用%s和%s欄位型別進行ansi與unicode字串之間的相互轉換,正確的做法是使用multibytetowidechar和widechartomultibyte函式。

XML中特殊字元的處理方式

專案中需要解析xml,發現如果包含一些特殊字元,使用documenthelper.parsetext xmlstring 這個方法時會報錯,原因是在 xml 元素中,和 是非法的。會產生錯誤,因為解析器會把該字元解釋為新元素的開始。也會產生錯誤,因為解析器會把該字元解釋為字元實體的開始。度娘了一下解...

SIGCLD處理方式

apue上sigcld語義寫的有點不清楚,到底我們的系統是如何來處理sigcld訊號呢?1.sig dfl 預設的處理方式是不理會這個訊號,但是也不會丟棄子進行狀態,所以如果不用wait,waitpid 對其子進行進行狀態資訊 會產生殭屍程序。2.sig ign 忽略的處理方式,這個方式和預設的忽略...

遇事處理方式

事,慢慢地說 大事,清楚地說 小事,幽默地說 沒把握的事,謹慎地說 沒發生的事,不要胡說 做不到的事,別亂說 傷害人的事,不能說 討厭的事,對事不對人地說 開心的事,看場合說 傷心的事,不要見人就說 別人的事,小心地說 自己的事,聽聽自己的心怎麼說 現在的事,做了再說 未來的事,未來再說 知人不必言...