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