首頁 >後端開發 >C++ >如何在 C 中建立包含嵌入空字元的 `std::string` ?

如何在 C 中建立包含嵌入空字元的 `std::string` ?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-29 08:06:10782瀏覽

How Can I Create a `std::string` Containing Embedded Null Characters in C  ?

創建帶有嵌入Null 的std::string:深入檢查

從包含嵌入null 的字符串文字構造std::string 時字符,例如“std ::string my_string("a\0b");”,結果字串中只能出現第一個字元。為了應對這項挑戰,可以根據所使用的 C 版本採用各種方法。

C 14 及更高版本

在 C 14 中,字串文字獲得了表示包含嵌入空值的字元的能力。透過將後綴「s」附加到字串文字,可以將其視為 std::string 文字而不是 C 字串文字。例如:

std::string s = "pl-<pre class="brush:php;toolbar:false">std::string   x("pq\0rs");   // Two characters because input assumed to be C-String
std::string   x("pq\0rs",5); // 5 Characters as the input is a char array with 5 characters.
-op"s; // Notice the "s" at the end.

Pre-C 14 解

在C 14 之前,採用char* 的std::string 建構子假定輸入是C 字串,即以空值終止。為了補償,必須使用接受 char 陣列及其長度的不同建構子:

需要注意的是,與 C 字串不同,C 中的 std::string 不是以 null 結尾的。但是,c_str() 方法可以提供指向包含以 null 結尾的 C 字串表示形式的內部緩衝區的指標。

以上是如何在 C 中建立包含嵌入空字元的 `std::string` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn