从零开始学习C++(九.C++字符串操作)

156 阅读2分钟

「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战

前言

上篇演示了字符串的拼接,使用的是+,除了这个基础操作,今天来介绍实战一下字符串其他最常用的基础操作

append 字符串拼接

#include <iostream>
using namespace std;
int main()
{
	string a = "666";
	string b = "999";
	a.append(b);
	cout << a << endl;
	return 0;
}

运行效果 image.png

substr字符串切割

#include <iostream>
using namespace std;
int main()
{
	string a = "666";
	string b = a.substr(1,2);
	cout << b << endl;
	return 0;
}

substr,第一位为,开始位置,第二位是截取字符串长度。

image.png

判断字符长度

#include <iostream>
using namespace std;
int main()
{
	string a = "666";
	cout << a.length() << endl;
	cout << size(a) << endl;
	return 0;
}

主要是lengthsize方法。 image.png

判断字符是否包含另外的字符串

#include <iostream>
using namespace std;
int main()
{
	string a = "666";
	string b = "6";
	string::size_type c;
	c = a.find(b);//在a中查找b.
	if (c == string::npos)//不存在。
		cout << "没找到"<< endl;
	else//存在。
		cout << "找到了" << endl;
	return 0;
}

string:npos是个特殊值,说明查找字符串有没有匹配,find结果于之相互对比。

字符串与整数互相转换&判断数据类型

#include <iostream>
#include <typeinfo>
#include <string>
using namespace std;
int main()
{
	string a = "12";
	cout << a << endl;
	cout << typeid(a).name() << endl;
	int b = atoi(a.c_str());
	cout << b << endl;
	cout << typeid(b).name() << endl;
	string s = std::to_string(b);
	cout << s << endl;
	cout << typeid(a).name() << endl;
}

image.png

这个例子引入了其他的C++头文件,typeinfo,string一个是用来进行类型判断的,还有一个的是用于字符串的头文件包,和Python比较相似,但是其使用方法不利于基于,使用typeid(变量).name来进行变量的类型输出 。
使用std::stringstd是一个全局公用的命名空间,表示使用string头文件中的to_string方法来,进行整数转字符串类型
最后c_str()很难理解,c_str()返回的是一个临时指针,atoi是字符串转换为整数的方法,但是atio传入不能是字符串类型,需要是一个char*的指针类型,需要需要这样:atoi(字符串.c_str())

总结

总结到自己日常用到的一些方法,前面还比较简单,可以理解,最后的类型转换有点懵,主要是需要从C语言的习惯来,C语言太底层了,需要了解到一些指针知识,C和C++最难的就是指针了,这是最让学C和C++的人最头痛的地方,后面再继续慢慢揭开它的面纱~