【C++学习笔记 14】C++中的字符串

字符串就是字符的集合,在C++中默认的编码格式是ASCII码。

举个例子

#include <iostream>

int main() {
	char name[] = "InfiHeart";

	std::cout << name << std::endl;
	std::cin.get();
}

定义上述字符串并打开内存视图
在这里插入图片描述
可以发现以字节形式存储的字符串数据。在字符串末尾存在00,这个空字符的存在是为了告诉电脑,字符串在何时结束。 为了实验上述说法,换个方式定义字符串

#include <iostream>

int main() {
	char name[] = "InfiHeart";
	char name2[9] = {'I', 'n', 'f', 'i', 'H', 'e', 'a', 'r', 't'};

	std::cout << name2 << std::endl;
	std::cin.get();
}

逐个字符定义后运行
在这里插入图片描述
可以发现由于少了用于提示终止的空字符,在内容外打印出了一堆乱码
将定义改写为char name2[10] = {'I', 'n', 'f', 'i', 'H', 'e', 'a', 'r', 't', 0};便可以正常显示。

如何使用字符串

C++的标准库中提供了std::string,此外还存在一个模板类basic_string,前者实际上就是后者的模板类实例,这种形式叫做模板特化(template specialization)。意为把char作为模板类basic_string的模板参数,即char就是每个字符背后的数据类型。
std::string是C++中推荐使用的字符串方法,本质上就是char数组和一些内置函数。使用标准库中的写法修改代码

#include <iostream>

int main() {
	std::string name = "InfiHeart";
	std::cout << name << std::endl;
	std::cin.get();
}

值得一提的是,C++中""中的字符串,默认为const类型。std::string有个接受参数为char指针或const char指针的构造函数, 如果尝试std::string name ="InfiHeart" + "Hello!";则会出现报错,因为这是在将两个const char数组相加,或者说将两个指针相加,它们并不是string类型。可以尝试换行写name += "Hello!" ,即将一个指针加到了string类的name上,然后+=操作符在string类中被重载了,所以支持这种操作。 或者是显式的调用string构造函数将其中一个传入string构造函数中std::string name =std::string("InfiHeart") + "Hello!";,这会带来额外的字符串拷贝,但通常问题不大。


教程来源:The Cherno C++ 教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值