共用方式為


關於字串

字串函式讓應用程式能夠複製、比較、排序、格式化和轉換字元字串,以及決定字串中每個字元字元類型的方法。 如果執行應用程式的作系統支援這些字元集,則所有字串函式都支援單一位元組、雙位元組和 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 值的數目,這指的是函式的 ANSI 版本中的位元組,或 Unicode 版本的 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 格式儲存。 載入資源時,應用程式可以使用資源函式的 Unicode 版本(例如,LoadStringW)來取得資源做為 Unicode 數據。

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