当前位置:   article > 正文

C++中遍历字符串_c++ 遍历字符串

c++ 遍历字符串

C++中的常用遍历方式:

一、普通 for 循环遍历

二、C++中迭代器的使用

三、范围 for 的使用

无论是C 语言还是C++ ,我们最常用到的遍历方式便是 for ( ; ; ) 循环的方式,一一遍历数组/字符串内容然后将其打印,接下来我们一起来看看常用遍历方式:

一.普通的 for 循环遍历

首先我们来看看一组打印代码:

string str1="12345";
int i=0;
for(;i<str1.size();++i){
	cout<<str1[i]<<" ";
}
cout<<endl;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

上述代码就是一段普通的用 for 循环来打印字符串内容的代码,接下来将介绍另外一种打印方式:iterator 接口

在这里插入图片描述

二、迭代器 iterator

迭代的使用类似于指针,同样可以进行 解引用操作和自增操作

(一)begin 接口与 end 接口

iterator begin();
const_iterator begin() const;

iterator end();
const_iterator end() const;

1.可读可写型

迭代器是一种元素的通用访问机制,它的主要用法:

string str1="12345";
string::iterator it=str1.begin();
while(it!=str1.end()){
	cout<<*it<<" ";
	++it;
}
cout<<endl;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这里的 begin 与 end 是 iterator 接口中常用迭代器,其中 begin 迭代器指向字符串 str1 的首元素位置,end 迭代器指向字符串 str1 的尾元素的下一个位置

在这里插入图片描述
其中,使用 iterator 接口可以进行元素指向内容的修改:

string str1="12345";
string::iterator it=str1.begin();
while(it!=str1.end()){
    *it=‘a’;
	cout<<*it<<" ";
	++it;
}
cout<<endl;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
主要是因为这里使用的是 非 const 接口,因而可以进行字符串内容的修改,iterator 接口为可读可写。

2.只读型

倘若使用第二个 const 接口,在 debug 版本之下进行调试就会发生中断操作,但是在 Release 版本之下不会报错:
在这里插入图片描述
在这里插入图片描述
主要是因为这里使用了const 修饰,因而字符串内容是不可以利用引用类型来修改,此时 iterator 接口是只读型接口。

(二)cbegin 接口与 cend 接口

const_iterator cbegin() const
const_iterator cend() const

可以看出来这两个接口都是被 const 修饰,因而cbegin / cend 都是只读迭代器,不可以修改其内容

在这里插入图片描述
当使用 *it 来修改字符串内容时,出现了错误提示

(三)rbegin / rend 接口

rbegin 与 rend 是反向迭代器,rbegin:指向最后一个元素的位置;rend:指向第一个元素的前一个位置
在这里插入图片描述
接口说明:

reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
reverse_iterator rend();
const_reverse_iterator rend() const;

在这里插入图片描述

三、范围 for

for(当前需要查找的遍历:需要遍历的容器)

常见范围 for 书写形式:
1.只读:for(const auto& 变量:需要遍历容器)
2.可读可写:for(auto& 变量:需要遍历的容器)

void test()
{
	string s = "13456";
	for (char ch : s) {
		cout << ch << " ";
	}
	cout << endl;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在进行练习时候要注意是否被 const 修饰(可读可写 / 只读),注意正确的调用接口

今天的分享就到此结束了,有任何问题可以留言哦~~

美好的一天从敲代码开始 ,加油!
biubiubiu~~~~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/398945
推荐阅读
相关标签
  

闽ICP备14008679号