關於字串
字串函式提供應用程式複製、比較、排序、格式及轉換字元字串的方法,以及決定字串中每個字元的字元類型的方法。 如果執行應用程式的作業系統支援這些字元集,則所有字串函式都支援單一位元組、雙位元組和 Unicode 字元集。
安全性警告: 字串函式的使用不正確可能會導致應用程式的安全性問題。 這通常牽涉到緩衝區溢位,這可允許對您的應用程式進行阻斷服務攻擊,或從攻擊者插入可執行檔程式碼。 Strsafe 函式可讓您更安全地處理字串,並建議為您的應用程式提供更好的安全性。 如需這些函式的詳細資訊,請參閱 使用 Strsafe.h 函式。
本節討論下列主題。
與 C Run-Time 字串函式的比較
許多字串函式會從標準 C 執行時間 (CRT) 程式庫重複或增強熟悉的字串函式。 許多增強功能可讓字串函式使用 Unicode 或擴充字元集。 下表顯示 CRT 函式、支援 Unicode 的 Windows 函式 (,不同于 CRT 函式) ,以及 StrSafe 函式。
CRT 字串函式 | Windows 字串函式 | StrSafe 函式 |
---|---|---|
strcat | lstrcat | |
strcmp | lstrcmp | (沒有對等函式) |
strcpy | lstrcpy | |
strlen | lstrlen |
例如, strlen 函式一律會傳回字串中的位元組數目,但 lstrlen 函式會傳回 TCHAR 值的數目,這是指 Unicode 版本的 ANSI 版本或 WCHAR 值的位元組。
下列字串函式與標準 C 函式不同,例如 tolower 和 toupper ,因為它們會在字元集中的任何字元上運作。 例如,使用 CharLower 函式,應用程式可以使用 umlaut (Ü) 將大寫 U 轉換成小寫 (ü) 。 如需字元集的詳細資訊,請參閱 單一位元組字元集。
函式 | 描述 |
---|---|
CharLower | 將字元或字串轉換成小寫。 |
CharLowerBuff | 將字元字串轉換成小寫。 |
CharNext | 移至字串中的下一個字元。 |
CharPrev | 移至字串中的上述字元。 |
CharUpper | 將字元或字串轉換成大寫。 |
CharUpperBuff | 將字串轉換為大寫。 |
下列字串函式會根據使用者選取之語言的語意來判斷字元。 這些函式已啟用 Unicode。
函式 | 描述 |
---|---|
IsCharAlpha | 判斷字元是否為字母。 |
IsCharAlphaNumeric | 判斷字元是否為英數位元。 |
IsCharLower | 判斷字元是否為小寫。 |
IsCharUpper | 判斷字元是否為大寫。 |
下表顯示標準 C 執行時間 (CRT) 函式的 Unicode 延伸模組。 如先前所述,StrSafe 函式可讓您更安全地處理字串,並建議您為應用程式提供更好的安全性。
標準 CRT 函式 | 字串函式 | StrSafe 函式 |
---|---|---|
sprintf | wsprintf | |
vsprintf | wvsprintf |
字串資源
在資源中維護字元字串的應用程式,可以透過最少心力轉譯成新的語言。 您可以直接轉譯資源檔中的字串,並重新連結應用程式,而不是在來源模組中搜尋字串。 此外,使用字串資源可簡化從相同來源檔案建立 Unicode 和非 Unicode 版本的應用程式。
LoadString 函式會從應用程式的可執行檔載入字串資源。 FormatMessage函式會載入字串資源,並解譯可能內嵌在字串中的格式設定選項。
二進位格式的資源會以 Unicode 格式儲存。 載入資源時,應用程式可以使用 (LoadStringW的資源函式 Unicode 版本,例如) 以 Unicode 資料的形式取得資源。
對於 16 位字串資源,255 個字元是長度上限。 對於 32 位字串資源,65535 個字元是最大長度。