GetStringTypeExW 函式 (stringapiset.h)
擷取指定來源字串中字元的字元類型資訊。 針對字串中的每個字元,函式會在輸出陣列的對應 16 位元素中設定一或多個位。 每個位都會識別指定的字元類型,例如字母、數位或兩者都未識別。
語法
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
旗標,指定要擷取的字元類型資訊。 如需可能的旗標值,請參閱GetStringTypeW的dwInfoType參數。 如需字元類型位的詳細資訊,請參閱 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。 任何參數值都無效。
備註
如需字串函式使用概觀,請參閱 字串。
使用所提供地區設定的 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 的地區設定識別碼使用時,函式可能會成功,因為作業系統使用系統字碼頁。 不過,系統字碼頁中未定義的字元會出現在字串中,以問號 (?) 。
lpSrcStr和lpCharType參數的值不得相同。 如果相同,函式會失敗,並 ERROR_INVALID_PARAMETER。
Locale參數僅用於執行 Unicode 的字串轉換。 它與應用程式所提供的 CTYPE* 值無關。 這些值只由 Unicode 字碼點決定,而且不會因地區設定而有所不同。 例如,希臘文字母會指定為 地區設定的任何值C1_ALPHA。
規格需求
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | stringapiset.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應