關於字串

字串函式提供應用程式複製、比較、排序、格式及轉換字元字串的方法,以及決定字串中每個字元的字元類型的方法。 如果執行應用程式的作業系統支援這些字元集,則所有字串函式都支援單一位元組、雙位元組和 Unicode 字元集。

安全性警告: 字串函式的使用不正確可能會導致應用程式的安全性問題。 這通常牽涉到緩衝區溢位,這可允許對您的應用程式進行阻斷服務攻擊,或從攻擊者插入可執行檔程式碼。 Strsafe 函式可讓您更安全地處理字串,並建議為您的應用程式提供更好的安全性。 如需這些函式的詳細資訊,請參閱 使用 Strsafe.h 函式

本節討論下列主題。

與 C Run-Time 字串函式的比較

許多字串函式會從標準 C 執行時間 (CRT) 程式庫重複或增強熟悉的字串函式。 許多增強功能可讓字串函式使用 Unicode 或擴充字元集。 下表顯示 CRT 函式、支援 Unicode 的 Windows 函式 (,不同于 CRT 函式) ,以及 StrSafe 函式。

CRT 字串函式 Windows 字串函式 StrSafe 函式
strcat lstrcat
StringCchCat
StringCchCatEx
StringCbCat
StringCbCatEx
strcmp lstrcmp (沒有對等函式)
strcpy lstrcpy
StringCchCopy
StringCchCopyEx
StringCbCopy
StringCbCopyEx
strlen lstrlen
StringCchLength
StringCbLength

 

例如, strlen 函式一律會傳回字串中的位元組數目,但 lstrlen 函式會傳回 TCHAR 值的數目,這是指 Unicode 版本的 ANSI 版本或 WCHAR 值的位元組。

下列字串函式與標準 C 函式不同,例如 tolowertoupper ,因為它們會在字元集中的任何字元上運作。 例如,使用 CharLower 函式,應用程式可以使用 umlaut (Ü) 將大寫 U 轉換成小寫 (ü) 。 如需字元集的詳細資訊,請參閱 單一位元組字元集

函式 描述
CharLower 將字元或字串轉換成小寫。
CharLowerBuff 將字元字串轉換成小寫。
CharNext 移至字串中的下一個字元。
CharPrev 移至字串中的上述字元。
CharUpper 將字元或字串轉換成大寫。
CharUpperBuff 將字串轉換為大寫。

 

下列字串函式會根據使用者選取之語言的語意來判斷字元。 這些函式已啟用 Unicode。

函式 描述
IsCharAlpha 判斷字元是否為字母。
IsCharAlphaNumeric 判斷字元是否為英數位元。
IsCharLower 判斷字元是否為小寫。
IsCharUpper 判斷字元是否為大寫。

 

下表顯示標準 C 執行時間 (CRT) 函式的 Unicode 延伸模組。 如先前所述,StrSafe 函式可讓您更安全地處理字串,並建議您為應用程式提供更好的安全性。

標準 CRT 函式 字串函式 StrSafe 函式
sprintf wsprintf
StringCchPrintf
StringCchPrintfEx
StringCbPrintf
StringCbPrintfEx
vsprintf wvsprintf
StringCchVPrintf
StringCchVPrintfEx
StringCbVPrintf
StringCbVPrintfEx

 

字串資源

在資源中維護字元字串的應用程式,可以透過最少心力轉譯成新的語言。 您可以直接轉譯資源檔中的字串,並重新連結應用程式,而不是在來源模組中搜尋字串。 此外,使用字串資源可簡化從相同來源檔案建立 Unicode 和非 Unicode 版本的應用程式。

LoadString 函式會從應用程式的可執行檔載入字串資源。 FormatMessage函式會載入字串資源,並解譯可能內嵌在字串中的格式設定選項。

二進位格式的資源會以 Unicode 格式儲存。 載入資源時,應用程式可以使用 (LoadStringW的資源函式 Unicode 版本,例如) 以 Unicode 資料的形式取得資源。

對於 16 位字串資源,255 個字元是長度上限。 對於 32 位字串資源,65535 個字元是最大長度。