我是靠谱客的博主 知性冥王星,最近开发中收集的这篇文章主要介绍【C++】字符串遍历一、下标遍历二、范围for语句三、迭代器 iterator,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C++编程-字符串遍历

  • 一、下标遍历
  • 二、范围for语句
  • 三、迭代器 iterator
    • (一)begin 接口与 end 接口
      • 1、可读可写型
      • 2、只读型
    • (二)cbegin 接口与 cend 接口
    • (三)rbegin / rend 接口

一、下标遍历

#include <iostream>
#include <string>
using namespace std;

int main() {
	string str = "abcdefg";
	for (int i = 0; i < str.length(); i++) {
       cout<< str[i] <<endl; 
    }
    for (int i = 0; i < str.size(); i++) {
       cout<< str[i] <<endl; 
    }
    for (int i = 0; str[i] != ''; i++) {
       cout<< str[i] <<endl; 
    }
	return 0;
}

二、范围for语句

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

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

void stringTraverse() {
	string s = "123456";
	for (char ch : s) {
		cout << ch << endl;
	}
	for(auto c : s)
    {    
        cout << c; //范围for语句
    }

	// 只读
	for (const auto& ch : s) {
		cout << ch << endl;
	}
	// 可读可写
	for (auto& ch : s) {
		cout << ch << endl;
	}
}

三、迭代器 iterator

在这里插入图片描述
迭代的使用类似于指针,同样可以进行 解引用操作和自增操作。

(一)begin 接口与 end 接口

iterator begin(); const_iterator begin() const;
iterator end(); const_iterator end() const;

1、可读可写型

void stringTraverse() {
	string str1 = "12345";
	string::iterator it = str1.begin();
	while(it != str1.end()){
		cout << *it << " ";
		// 可以 *it = 'a';
		++it;
	}
	cout<<endl;

	for(auto iter = str.begin(); iter != str.end(); iter++) {
        cout << *iter; //迭代器访问
    }
    cout<<endl;
}

2、只读型

void stringTraverse() {
	string str2 = "12345";
	string::const_iterator it = str2.begin();
	while(it != str2.end()){
		cout << *it << " ";
		// 不可以 *it = 'a';
		++it;
	}
	cout<<endl;

	for(auto iter = str.begin(); iter != str.end(); iter++) {
        cout << *iter; //迭代器访问
    }
    cout<<endl;
}

(二)cbegin 接口与 cend 接口

const_iterator cbegin() const
const_iterator cend() const

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

void stringTraverse() {
	const string str3 = "12345";
	string::const_iterator it3 = str3.cbegin();
	while (it3 != str3.cend()) {
		// 不可以 *i = 'a';
		cout << *it3 << "";
		++it3;
	}
	cout << end1;
}

(三)rbegin / rend 接口

rbegin 与 rend 是反向迭代器。
rbegin:指向最后一个元素的位置;
rend:指向第一个元素的前一个位置

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

void stringTraverse() {
	string str4 ="12345";
	string:reverse_iterator it4 = str4.rbegin();
	while (it4 != str4.rend()) {
		cout << *it4 << "";
		++it4;
	}
	cout << end1;
}

最后

以上就是知性冥王星为你收集整理的【C++】字符串遍历一、下标遍历二、范围for语句三、迭代器 iterator的全部内容,希望文章能够帮你解决【C++】字符串遍历一、下标遍历二、范围for语句三、迭代器 iterator所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部