windows核心程式設計讀書筆記 字元與字串

2021-07-12 04:47:20 字數 1600 閱讀 6058

1

:windows vista

,每個unicode

都使用utf-16

編碼,談到

unicode

,除非特別宣告,否則都是

utf-16

編碼。 2:

wchat_t

對應char

,表示乙個16為

unicode

字元。宣告

unicode

字元和字串方式: 3

:巨集text

自動切換

ansi

或者unicode字元/

字串。 4

:windows nt

起,所有核心函式都用

unicode

,及時我們呼叫的是

ansi

版本函式時,此函式也只是乙個轉換層,轉為字元為

unicode

,再呼叫

unicode

版本函式。返回類似。已知轉換函式存在

bug,應用程式應該用

unicode

開發。

5:定義

unicode,_unicode

要麼同時指定,要麼都不指定。 6

:c執行庫中的

ansi

函式不會轉換為

unicode

版本。

7:安全函式,以

_s為字尾

eg:_tcscpy_s

,_tcscat_s,

使用_countof

計算緩衝區大小。緩衝區太小會返回失敗,不會自動截斷。

erange 8

stringcchcat(ex),stringcchcopy(ex),stringcchprintf(ex).. .

緩衝區太小會執行截斷。

strsafe_e_insufficient_bugger

,被succeeded/failed

定義成失敗。 9

:比較函式:

comparestring(ex)

,lcid getthreadlocale(),

cch引數傳入負值,會假設

pstring以0

結尾。

comparestringordinal,

比較程式內部所用字串(路徑名、登錄檔、

xml元素

/屬性等),速度快。只支援

unicode

。兩個函式返回

0表示呼叫失敗,返回

cstr_less_than(1)

表示pstring1

小於pstring2

,返回cstr_equal(2)

表示相等,返回

cstr_greater_than(3)

表示pstring1

大於pstring2

。返回值-2

10:使用

multibytetowidechar

和widechartomultibyte

進行ansi

與unicode

轉換。

11:判斷

unicode

還是ansi

字元,使用

istextunicode

讀書筆記 Windows核心程式設計

第二章 從windows nt後,windows所有版本都用unicode來構建。如果輸入乙個非unicom的字串,如ansi,函式會將其先轉換為unicode,再把結果傳回作業系統,這樣經過轉換後,需要更多的記憶體,而且執行速度更慢。並且,目前已知的windows的這些轉換函式存在一些bug。所有...

《Windows核心程式設計》讀書筆記(一)

第1章對程式錯誤的處理 1 常見的windows函式的返回型別 void 無返回值型,該函式的執行不可能失敗。windows函式很少此型別 bool 函式執行失敗則返回0,否則返回非0 handle 失敗則返回null,否則返回乙個可操作的物件的handle。注 有些函式會返回乙個控制代碼值inva...

《Windows核心程式設計》讀書筆記(三)

unicode 寬位元組字符集是是為了解決軟體本地化 多語言版本化 而定製的一項技術標準。unicode字串中的所有字元都是16位的 兩個位元組 程式設計師只需要對指標進行遞增或者遞減,就可以遍歷字串中的各個字元,不在需要像單位元組字元一樣去判斷下一位元組是屬於同一字元的組成部分還是乙個新字元。使用...