在字符串中使用空字符 (C++)

2023-12-24

我正在温习 C++,偶然发现了关于字符串、字符数组和空字符的奇怪行为 ('\0')。下面的代码:

#include <iostream>
using namespace std;

int main() {
    cout << "hello\0there"[6] << endl;

    char word [] = "hello\0there";
    cout << word[6] << endl;

    string word2 = "hello\0there";
    cout << word2[6] << endl;

    return 0;
}

产生输出:

> t
> t
>

幕后到底发生了什么?为什么字符串文字和声明的字符数组存储't'在索引 6 处(在内部之后)'\0'),但声明的字符串没有?


据我记得,前两个本质上只是一个数组,打印字符串的方式是继续打印直到\0遇到了。因此,在前两个示例中,您从字符串中第 6 个字符的点偏移开始,但在您的情况下,您打印出第 6 个字符,即t.

会发生什么string类的特点是它将字符串复制到它自己的内部缓冲区中,并通过将字符串从数组的开头复制到第一个来实现这一点\0它发现。就这样t不存储,因为它出现在第一个之后\0.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在字符串中使用空字符 (C++) 的相关文章

  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 每个术语出现的次数

    我得到了一个数组a n 2 where n can be 10 5最大时有n个科目和n个学生 全部编号为 1 2 n a i 0 and a i 1 1 lt i lt n 表示在第 i 个科目中 所有来自a i 0 to a i 1 通过
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目

    我们有一些用 Net Framework编写的遗留项目 应该由由ASP NET Core3 1编写的API项目使用 问题是这些遗留项目正在使用 System Web HttpContext 您知道它不再存在于 net core 中 现在我们
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • 在 Dynamics CRM 插件中访问电子邮件发件人地址

    我正在编写一个 Dynamics CRM 2011 插件 该插件挂钩到电子邮件实体的更新后事件 阶段 40 pipeline http msdn microsoft com en us library gg327941 aspx 并且在此阶
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • 将多维数组转换为单数组(Javascript)

    我有一个对象数组 来自 XLSX js 解析器 因此其长度和内容各不相同 表示已给予项目的资助 简化后 它看起来像这样 var grants id p 1 location loc 1 type A funds 5000 id p 2 lo
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob

随机推荐

  • 如何使用 ts-loader 忽略 webpack 中的测试文件

    我有一个项目 使用 jest 和 ts jest 运行名为 test ts 的测试文件 这很好 但是当我启动 webpack 时 测试文件出现错误 ERROR in some path note test ts 27 3 error TS2
  • 使用 ctypes 和 Windll 的带有图标的 Python MessageBox

    因此 我正在寻找一种仅使用本机库在 Python 中创建简单消息框的方法 并遇到了几篇文章 但即this one https stackoverflow com questions 2963263 how can i create a si
  • 检测 PATH 中是否有特定的目录条目

    With bin bash 我如何检测用户的 PATH 变量中是否有特定目录 例如 if p HOME bin then echo Your path is missing bin you might want to add it else
  • 如何设置 databinder 调度以在 Eclipse 中使用?

    我想在Scala中编写一些简单的HTTP请求 但是Databinder Dispatch库只有sbt的指令 由于我是 Eclipse 的相对新手 有人可以提供有关如何在 Eclipse 中的 Scala 项目中使用它的说明吗 我正在使用 S
  • 默认时间戳显示 oracle 中的本地时间

    我创建了一个带有created time 列的表 该表的默认时间为systimestamp 当我向其中插入一行时 时间显示的是我的当地时间 23 02 18 08 49 05 430419000 上午 但是当我查询 select sysst
  • Windows Phone 7:如何打开网络浏览器?

    如何在 Windows Phone 7 中打开 Web 浏览器 我不在乎它是默认浏览器还是嵌入式浏览器 但如果两者都可能 我想知道 Windows Phone 论坛 gt Windows Phone 7 gt 打开网络浏览器 http so
  • 如何更改 unordered_map 中的键?

    我需要使用平均支持恒定时间查找的数据结构 我认为使用std unordered map是一个好方法 我的数据是数字的 集合 115 190 380 265 这些数字不必按特定顺序排列 我需要有关于O 1 确定该数据结构中是否存在给定数字的时
  • 如何在 Laravel 中启用错误报告?

    我正在使用 Laravel 5 2 我正在尝试导入包含超过 18000 条记录的 Excel 工作表 出现了下面的错误 本地主机页面无法正常工作 localhost is currently unable to handle this re
  • Terminfo smkx 和应用程序光标键与应用程序键盘

    XTerm 控制序列 http invisible island net xterm ctlseqs ctlseqs html指定以下按键序列 CSI 1 h Application Cursor Keys DECCKM CSI 1 l N
  • 如何判断 AVAudioPlayer 已经播放完毕

    我正在开发一个使用以下方式播放声音的应用程序AVAudioPlayer 我想知道声音何时播放完毕 我想在声音停止播放时更改图像 这是我用来创建播放器的代码 NSURL url NSBundle mainBundle URLForResour
  • 显示带有键类型和引用的 MYSQL 表列

    我需要一个查询 INFORMATION SCHEMA 它将针对给定的模式和表名称向我显示具有以下属性的所有表列 它是什么键类型 PK gt 主键 UQ gt 唯一键 FK gt 外键 什么是键名称 如果是外键 则引用 schema tabl
  • 具有 ModelIO 的混合拓扑(四路/三路)

    我正在使用 ModelIO 导入一些简单的 OBJ 资源 如下所示 let mdlAsset MDLAsset url url vertexDescriptor nil bufferAllocator nil preserveTopolog
  • Windows 上的通用 ctag

    我是 ctags 新手 在阅读了有关该程序的一些信息后 我得出的结论是 Universal ctags 是最新版本 exhuberant ctags 的后继者 并且仍在积极开发中 https ctags io https ctags io
  • JAXB 编组声明的父类与实际运行时子类

    我正在使用 JAXB 来编组一个类 该类具有声明为类 Foo 的实例变量 在运行时 该实例变量被设置为 Foo 子类的实例 比如说 FooBar 类 Foo 和 FooBar 上都有基本的 JAXB 注释 XML 输出显示正在封送 Foo
  • 设置 PHP 的默认时区

    在我的网络应用程序中 我让用户从列表中选择他们喜欢的时区 其中包含PHP 支持的所有时区 http www php net manual en timezones php 这么说吧 POST timezone 是所选时区 e g Ameri
  • 如何向 topojson 文件添加属性?

    给定一个 data tsv 文件 例如 id code name 1 AL Alabama 2 AK Alaska 4 AZ Arizona 5 AR Arkansas 6 CA California 给定一个 topojson json
  • Google 脚本中的字符串以以下开头

    我正在为我们正在进行的一些选举编写数据转换脚本 第一部分将所有名称更改为大写 这部分脚本工作正常 但是 我对脚本的第二部分有疑问 有些 ID 会有 S S123456 有些则没有 S 123456 出于我的目的 我需要所有 ID 开头都没有
  • mybatis中返回HashMap,并在spring MVC中作为ModelAttribute使用

    我想使用 spring mvc modelAttribute 在 Jsp 页面中显示类别列表 在我的 mapper xml 文件中是
  • 使用 Newtonsoft 在 C# 中通过 JSON 模式验证 JSON

    使用 JSON Schema 验证 JSON 返回值始终为 true 使用Newtonsoft进行验证和测试here https www jsonschemavalidator net 与模式和数据 它总是返回 未发现错误 JSON 根据模
  • 在字符串中使用空字符 (C++)

    我正在温习 C 偶然发现了关于字符串 字符数组和空字符的奇怪行为 0 下面的代码 include