首页 > 后端开发 > C++ > 如何在 C 中创建包含嵌入空字符的 `std::string` ?

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

Mary-Kate Olsen
发布: 2024-11-29 08:06:10
原创
702 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板