从包含嵌入 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中文网其他相关文章!