C++语法——字符串

参考:
[1]https://www.runoob.com/cplusplus/cpp-strings.html
[2]C++的
https://blog.csdn.net/Sarah_212/article/details/116720933
[3]reverse
reverse-csdn

字符串分为C风格字符串(字符数组)和C++引入的string类型

一.C语言的字符数组

C风格的字符串初始化

char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
//或者
char site[] = "RUNOOB";

可以看到最后字符是null 字符,即 ‘\0’ 终止
常用函数:

	strcpy(s1, s2);
//复制字符串 s2 到字符串 s1。

strcat(s1, s2);
连接字符串 s2 到字符串 s1 的末尾。连接字符串也可以用 + 号,例如:
string str1 = "runoob";
string str2 = "google";
string str = str1 + str2;

strlen(s1);
返回字符串 s1 的长度。

strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 0;否则返回非零

字符串查找:(略)
strchr(s1, ch);
strstr(s1, s2);

二.C++的string字符串

C++的string类支持上述的所有函数
主要参考2

1.构造函数
	//构造函数 (字符串是双引号)
	string s1();//默认构造
	string s2("hello1");//不要与常量弄混
	string s3(4, 'w');
	string s4("12345", 1, 3);//带字符串截取的功能
2.初始化(赋值)

	//赋值
	//拷贝赋值
	string s1= "nihao";


	//assign 分配函数 与构造类似 构造函数执行后 不能再用assign 但是使用assign后还可以用assign
	string s1,s2;
	s1.assign("sss");
	s2.assign(s1, 1, 2);
	s2.assign(4, 'K');
	
	//substr 子字符串
	string s1, s2;
	s1 = "hahah11";
	s2=s1.substr(0, 2);
	 

string的构造函数可以使用以下四个方法进行。
1)创建一个空的字符串

string str;

2)使用一个字符串来初始化

const char*str=“hello world”;

这里使用char来初始化一个字符串,也是根据C++中string对元素维护的方法(如上所述)。加上const说明指针str是常指针。指针指向是不可以发生改变的。
3)使用一个string对象初始化string对象

string s1;
string s2(s1);

此时是调用了拷贝构造函数。
4)使用n个字符c进行初始化

string s1(5,‘s’);
s1=’’‘aaaaa’
索引
//at函数
长度
size 

1.字符串的长度获取 (C++方法)
有两种方法,一种是length(),一种是size()

string str1="123";
cout<<str1.length()<<endl;//输出3 
cout<<str1.size()<<endl;//输出3 

2.字符数组的长度获取(C语言相关)
strlen方法获取实际长度,sizeof获取申明的数组所占字节数

char a[100]={'1','2','3'};
char b[100]={"123"};
char c[100];
cin>>c;//输入123 
cout<<strlen(a)<<endl;//输出3 
cout<<strlen(b)<<endl;//输出3
cout<<strlen(c)<<endl;//输出3 
cout<<sizeof(a)<<endl;//输出100 
cout<<sizeof(b)<<endl;//输出100 
cout<<sizeof(c)<<endl;//输出100 
翻转reverse

可以用来翻转字符串、数组、向量
参考[3]
这里仅仅介绍翻转字符串

//需要引入 #include<algorithm>

	string s1("1122334455");
	//reverse(s1.begin(), s1.end());//翻转所有
	reverse(s1.begin()+1, s1.end()-3);//翻转下标1到后3个之前的部分
	

三.应用

1.字符串遍历

参考:https://blog.csdn.net/qq_42270373/article/details/84589231

	//遍历字符串的三种方法
	// (1)类似数组的引用 [] (2)迭代器iterator (3)新式for循环
	string  s1("1234abcd");
	cout << "method 1:";
	for(int i = 0; i < s1.size(); i++)
		cout << s1[i];
	cout << endl;

	cout << "method 2:";
	string::iterator it = s1.begin();//string类型要写
	for (;it!=s1.end(); it++)
		cout << *it;//引用的时候*it 引用内容
	cout << endl;

	cout << "method 3:";
	for (auto a:s1)
		cout << a;//引用的时候*it 引用内容
	cout << endl;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值