GetStringTypeW 函式 (stringapiset.h)
注意
此 API 可能會有特定 Unicode 字元不完整/過期的資訊,尤其是補充範圍中的資訊。 如需更精確且完整的 Unicode 字元類型資訊,請考慮使用對等的 ICU API,例如 u_charType、u_islower、u_isspace和 u_ispunct。 如需在 Windows 上使用 ICU API 的指引,請參閱 Windows上開始使用 ICU。
擷取指定 Unicode 來源字串中字元的字元類型資訊。 針對字串中的每個字元,函式會在輸出數位的對應16位元素中設定一或多個位。 每個位都會識別指定的字元類型,例如字母、數位或兩者都不是。
語法
BOOL GetStringTypeW(
[in] DWORD dwInfoType,
[in] _In_NLS_string_(cchSrc)LPCWCH lpSrcStr,
[in] int cchSrc,
[out] LPWORD lpCharType
);
參數
[in] dwInfoType
旗標,指定要擷取的字元類型資訊。 此參數可以有下列值。 字元類型會分成不同的層級,如一節所述。
旗 | 意義 |
---|---|
|
擷取字元類型資訊。 |
|
擷取雙向配置資訊。 |
|
擷取文字處理資訊。 |
[in] lpSrcStr
要擷取字元類型的 Unicode 字串指標。 如果 cchSrc 設定為任何負值,則字串會假設為 null 終止。
[in] cchSrc
lpSrcStr 所指示之字串的大小,以字元為單位,。 如果大小包含終止的 Null 字元,函式會擷取該字元的字元類型資訊。 如果應用程式將大小設定為任何負整數,則來源字元串會假設為 Null 終止,且函式會以 Null 終止的額外字元自動計算大小。
[out] lpCharType
16 位值的陣列指標。 此陣列的長度必須夠大,才能接收來源字串中每個字元的一個16位值。 如果
傳回值
如果成功,則傳回非零值,否則傳回 0。 若要取得擴充的錯誤資訊,應用程式可以呼叫 getLastError
- ERROR_INVALID_FLAGS。 為旗標的值無效。
- ERROR_INVALID_PARAMETER。 任何參數值都無效。
言論
如需使用字串函式的概觀,請參閱 Strings。
lpSrcStr 和 lpCharType 參數的值不得相同。 如果相同,函式會失敗並出現ERROR_INVALID_PARAMETER。
此函式不會使用對應 GetStringTypeA 函式所使用的 Locale 參數。 由於參數差異,應用程式無法透過使用 #define UNICODE 參數,自動叫用適當 ANSI 或 Unicode 版本的 GetStringType* 函式。 應用程式可以使用 GetStringTypeEx來規避這項限制,這是建議的函式。
支援的字元類型
字元類型位分成數個層級。 單一呼叫此函式可以擷取一個層級的資訊。 每個層級限制為16位的資訊,讓其他對應函式,每個字元只能有16位的表示法,也可以傳回字元類型資訊。
Ctype 1
這些類型支援 ANSI C 和 POSIX (LC_CTYPE) 字元輸入函式。 當 dwInfoType 設定為
名字 | 價值 | 意義 |
---|---|---|
C1_UPPER | 0x0001 | 大寫 |
C1_LOWER | 0x0002 | 小寫 |
C1_DIGIT | 0x0004 | 十進位數 |
C1_SPACE | 0x0008 | 空格字元 |
C1_PUNCT | 0x0010 | 標點 |
C1_CNTRL | 0x0020 | 控制字元 |
C1_BLANK | 0x0040 | 空白字元 |
C1_XDIGIT | 0x0080 | 十六進位數位 |
C1_ALPHA | 0x0100 | 任何語言字元:字母、教學大綱或表像 |
C1_DEFINED | 0x0200 | 已定義的字元,但不是其他其中一個C1_* 類型 |
下列字元類型可以是常數或可從基本類型計算,而且不需要由此函式支援。
類型 | 描述 |
---|---|
字母 | 字母字元和數位(C1_ALPHA和C1_DIGIT) |
列印 | 圖形字元和空白(C1_CNTRL以外的所有C1_* 類型) |
Ctype 2
這些類型支援 Unicode 文字的適當配置。 針對 DBCS 地區設定,字元類型同時適用於窄字元和寬字元。 指派方向屬性,讓 Unicode 標準化的雙向配置演算法產生精確的結果。 這些類型互斥。 如需使用這些屬性的詳細資訊,請參閱 Unicode Standard。
名字 | 價值 | 意義 |
---|---|---|
強 | ||
C2_LEFTTORIGHT | 0x0001 | 由左至右 |
C2_RIGHTTOLEFT | 0x0002 | 由右至左 |
弱 | ||
C2_EUROPENUMBER | 0x0003 | 歐洲數位、歐洲數位 |
C2_EUROPESEPARATOR | 0x0004 | 歐洲數值分隔符 |
C2_EUROPETERMINATOR | 0x0005 | 歐洲數值終止符 |
C2_ARABICNUMBER | 0x0006 | 阿拉伯文數位 |
C2_COMMONSEPARATOR | 0x0007 | 一般數值分隔符 |
中性 | ||
C2_BLOCKSEPARATOR | 0x0008 | 區塊分隔符 |
C2_SEGMENTSEPARATOR | 0x0009 | 區段分隔符 |
C2_WHITESPACE | 0x000A | 空格符 |
C2_OTHERNEUTRAL | 0x000B | 其他中性 |
不適用 | ||
C2_NOTAPPLICABLE | 0x0000 | 沒有隱含方向性(例如控制件代碼) |
Ctype 3
這些類型是一般文字處理或標準 C 連結庫函式所需 POSIX 類型的擴充功能佔位元元。 當 dwInfoType
名字 | 價值 | 意義 |
---|---|---|
C3_NONSPACING | 0x0001 | 非步調標記 |
C3_DIACRITIC | 0x0002 | 變音符號非步調標記 |
C3_VOWELMARK | 0x0004 | Vowel 非步調標記 |
C3_SYMBOL | 0x0008 | 象徵 |
C3_KATAKANA | 0x0010 | 片假名字符 |
C3_HIRAGANA | 0x0020 | 平假名字符 |
C3_HALFWIDTH | 0x0040 | 半角(窄)字元 |
C3_FULLWIDTH | 0x0080 | 全角 (寬) 字元 |
C3_IDEOGRAPH | 0x0100 | 表像字元 |
C3_KASHIDA | 0x0200 | 阿拉伯文 kashida 字元 |
C3_LEXICAL | 0x0400 | 標點符號計算為字組的一部分(kashida、連字元、女性/男性序數指標、等號等) |
C3_ALPHA | 0x8000 | 所有語言字元(字母、教學大綱和表像) |
C3_HIGHSURROGATE | 0x0800 | Windows Vista: High Surrogate 程式代碼單位 |
C3_LOWSURROGATE | 0x1000 | Windows Vista: 低代理程式代碼單位 |
不適用 | ||
C3_NOTAPPLICABLE | 0x0000 | 不適用 |
C3_HIGHSURROGATE和C3_LOWSURROGATE只會針對完整性列出,而且不應該提供給此函式。 它們只與 Unicode 相關。
從 Windows 8 開始 :GetStringTypeW 在 Stringapiset.h 中宣告。 在 Windows 8 之前,它已在 Winnls.h 中宣告。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
支援的最低伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
目標平臺 | 窗戶 |
標頭 | stringapiset.h (包括 Windows.h) |
連結庫 | Kernel32.lib |
DLL | Kernel32.dll |