從包含嵌入null 的字符串文字構造std::string 時字符,例如“std ::string my_string("a\0b");”,結果字串中只能出現第一個字元。為了應對這項挑戰,可以根據所使用的 C 版本採用各種方法。
在 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.
在C 14 之前,採用char* 的std::string 建構子假定輸入是C 字串,即以空值終止。為了補償,必須使用接受 char 陣列及其長度的不同建構子:
需要注意的是,與 C 字串不同,C 中的 std::string 不是以 null 結尾的。但是,c_str() 方法可以提供指向包含以 null 結尾的 C 字串表示形式的內部緩衝區的指標。
以上是如何在 C 中建立包含嵌入空字元的 `std::string` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!