C 字符串空终止字符 0 修改
C-strings null terminating character modification
C字符串末尾的空字符是否始终恒定且无法修改?这意味着,程序员可以修改 C 字符串末尾的空字符/0 吗?或者它是恒定的,无法删除。示例:"牛排"在一串中,它在位置 5 处有 \0。当"牛排"被修改时,我们可以完全删除\0吗?
C 字符串末尾的空字符是否始终恒定且无法修改?
不,如果我们谈论的是字符数组(静态或动态),但是如果您的意思是常量字符串文字,例如:
const char* str = "steak";
程序员可以修改 C 字符串末尾的空字符/0 吗?
是的,只要内存不是只读的。
我们可以完全删除\0吗?
是的。但是,如果您将此字符串与期望' '
的函数一起使用,则行为是未定义的
如果 C 字符串是 std::string
的c_str()
或data()
成员函数的返回值,则标准禁止修改尾随的 0
元素。当然,仅仅因为标准禁止,并不意味着C++或其运行时环境中的任何内容都会警告您违规。很有可能你可以编写代码来尝试修改尾随0
,并且它将在不发出任何警报的情况下执行。然而,事情也很可能会以不可预测的奇怪方式出错。
所以不要这样做。
相关文章:
- 以简单的方式修改常量字符 * 与字符 * 内容
- 如何修改只读内存中的字符
- C++ 修改函数内部的字符
- 打开一个文件,修改每个字符,然后执行反向操作不输出原始文件
- C++,字符* 字符串修改
- 如何使用用户输入正确修改 2D 数组中的字符数组元素?专门用于电影院座位
- 为什么这个常量字符*在实际修改后无法修改?
- 修改正则表达式以包含反斜杠和单引号(以便反斜杠表现为转义字符)
- 代码审查:常量字符 * 修改
- 如何修改函数内的字符数组
- 根据向量<bool>修改字符的位
- 当试图在ostringstream中连接一个字符串时,这些字符串的内容会被修改和重构,字符串会在开始时被添加
- 表达式必须是可修改的左值(字符数组)
- 修改 C++ 中的字符*
- C++:如何修改全局字符字符串
- 修改字符 *常量字符串
- 比较字符串中的字符(由"="运算符修改)
- C 字符串空终止字符 0 修改
- 使用 &front() 修改 std::string 中的基础字符数组
- 在c++中修改字符数组的特定部分