共用方式為


GetStringTypeW 函式 (stringapiset.h)

注意

此 API 可能會有特定 Unicode 字元不完整/過期的資訊,尤其是補充範圍中的資訊。 如需更精確且完整的 Unicode 字元類型資訊,請考慮使用對等的 ICU API,例如 u_charTypeu_isloweru_isspaceu_ispunct。 如需在 Windows 上使用 ICU API 的指引,請參閱 Windows上開始使用 ICU。

擷取指定 Unicode 來源字串中字元的字元類型資訊。 針對字串中的每個字元,函式會在輸出數位的對應16位元素中設定一或多個位。 每個位都會識別指定的字元類型,例如字母、數位或兩者都不是。

注意 使用 GetStringTypeW 函式不正確,可能會危害應用程式的安全性。 若要避免緩衝區溢位,應用程式必須正確設定輸出緩衝區大小。 如需詳細資訊,請參閱 安全性考慮:Windows 使用者介面

 

語法

BOOL GetStringTypeW(
  [in]  DWORD                         dwInfoType,
  [in]  _In_NLS_string_(cchSrc)LPCWCH lpSrcStr,
  [in]  int                           cchSrc,
  [out] LPWORD                        lpCharType
);

參數

[in] dwInfoType

旗標,指定要擷取的字元類型資訊。 此參數可以有下列值。 字元類型會分成不同的層級,如一節所述。

意義
CT_CTYPE1
擷取字元類型資訊。
CT_CTYPE2
擷取雙向配置資訊。
CT_CTYPE3
擷取文字處理資訊。

[in] lpSrcStr

要擷取字元類型的 Unicode 字串指標。 如果 cchSrc 設定為任何負值,則字串會假設為 null 終止。

[in] cchSrc

lpSrcStr 所指示之字串的大小,以字元為單位,。 如果大小包含終止的 Null 字元,函式會擷取該字元的字元類型資訊。 如果應用程式將大小設定為任何負整數,則來源字元串會假設為 Null 終止,且函式會以 Null 終止的額外字元自動計算大小。

[out] lpCharType

16 位值的陣列指標。 此陣列的長度必須夠大,才能接收來源字串中每個字元的一個16位值。 如果 cchSrc 不是負數,lpCharType 應該是具有 cchSrc 元素之 字組的陣列。 如果 cchSrc 設為負數,lpCharType 是具有 lpSrcStr + 1 元素 的單字陣列。 當函式傳回時,這個數位列會包含一個對應至來源字串中每個字元的單字。

傳回值

如果成功,則傳回非零值,否則傳回 0。 若要取得擴充的錯誤資訊,應用程式可以呼叫 getLastError,以傳回下列其中一個錯誤碼:

  • ERROR_INVALID_FLAGS。 為旗標的值無效。
  • ERROR_INVALID_PARAMETER。 任何參數值都無效。

言論

如需使用字串函式的概觀,請參閱 Strings

lpSrcStrlpCharType 參數的值不得相同。 如果相同,函式會失敗並出現ERROR_INVALID_PARAMETER。

此函式不會使用對應 GetStringTypeA 函式所使用的 Locale 參數。 由於參數差異,應用程式無法透過使用 #define UNICODE 參數,自動叫用適當 ANSI 或 Unicode 版本的 GetStringType* 函式。 應用程式可以使用 GetStringTypeEx來規避這項限制,這是建議的函式。

支援的字元類型

字元類型位分成數個層級。 單一呼叫此函式可以擷取一個層級的資訊。 每個層級限制為16位的資訊,讓其他對應函式,每個字元只能有16位的表示法,也可以傳回字元類型資訊。

Ctype 1

這些類型支援 ANSI C 和 POSIX (LC_CTYPE) 字元輸入函式。 當 dwInfoType 設定為 CT_CTYPE1 時,輸出緩衝區中的陣列中會擷取這些值的位 OR。 針對 DBCS 地區設定,類型屬性會同時套用至窄字元和寬字元。 日文平假名和片假名字符,以及漢字表義字字元都有C1_ALPHA屬性。

名字 價值 意義
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 設定為 CT_CTYPE3 時,會擷取這些值的位 OR。 針對 DBCS 地區設定,Ctype 3 屬性同時適用於窄字元和寬字元。 日文平假名和片假名字符,以及漢字表義字字元都有C3_ALPHA屬性。

名字 價值 意義
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

另請參閱

GetStringTypeA

GetStringTypeEx

國家語言支援

國家語言支援函式