共用方式為


GetStringTypeExW 函式 (stringapiset.h)

注意

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

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

警告 使用 GetStringTypeEx 函式不正確可能會危害應用程式的安全性。 若要避免緩衝區溢位,應用程式必須正確設定輸出緩衝區大小。 如需詳細資訊,請參閱 安全性考慮:Windows 使用者介面
 
附注 與其 GetStringTypeAGetStringTypeW不同,此函式會透過使用 #define UNICODE 參數來呈現適當的 ANSI 或 Unicode 行為。 這是字元類型擷取的建議函式。
 

語法

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

參數

[in] Locale

指定地區設定的地區設定標識碼。 這個值會唯一定義 ANSI 代碼頁。 您可以使用 MAKELCID 巨集來建立地區設定識別碼,或使用下列其中一個預先定義的值。

Windows Vista 和更新版本: 也支援下列自定義地區設定標識符。

[in] dwInfoType

旗標,指定要擷取的字元類型資訊。 如需可能的旗標值,請參閱 GetStringTypeWdwInfoType 參數。 如需字元類型位的詳細資訊,請參閱 getStringTypeW備註。

[in] lpSrcStr

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

[in] cchSrc

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

[out] lpCharType

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

傳回值

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

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

言論

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

使用所提供地區設定的 ANSI 代碼頁,此函式會將來源字串從 ANSI 轉譯為 Unicode。 然後,它會分析每個 Unicode 字元的字元類型資訊。

此函式的 ANSI 版本會將來源字串轉換成 Unicode,並呼叫對應的 GetStringTypeW 函式。 因此,輸出緩衝區中的單字不會對應至原始 ANSI 字串,而是對應至其 Unicode 對等專案。 從 ANSI 轉換成 Unicode 可能會導致字串長度變更,例如,一對 ANSI 字元可以對應至單一 Unicode 字元。 因此,輸出緩衝區中的單字與原始 ANSI 字串中字元之間的對應,在所有情況下都不是一對一,例如多位元組字串。 因此,此函式的 ANSI 版本對多字元字串的使用有限。 建議改用函式的 Unicode 版本。

此函式會規避 GetStringTypeA與 getStringTypeW之間參數差異所造成的限制。 由於參數差異,應用程式無法透過使用 #define UNICODE 參數,自動叫用適當 ANSI 或 Unicode 版本的 GetStringType* 函式。 另一方面,GetStringTypeEx,對於該參數的行為正確。 因此,這是建議的函式。

當此函式的 ANSI 版本搭配僅限 Unicode 的地區設定識別碼使用時,函式可能會成功,因為操作系統會使用系統代碼頁。 不過,系統代碼頁中未定義的字元會以問號 (?) 的形式出現在字串中。

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

Locale 參數僅用於執行 Unicode 的字串轉換。 它與應用程式所提供的 CTYPE* 值無關。 這些值完全由 Unicode 字碼點決定,而且不會根據地區設定而有所不同。 例如,希臘文字母會指定為 Locale的任何值C1_ALPHA。

要求

要求 價值
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
支援的最低伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平臺 窗戶
標頭 stringapiset.h (包括 Windows.h)
連結庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

GetStringTypeW

國家語言支援

國家語言支援函式