C++中string类下的begin,end,rbegin,rend的用法

begin
语法:iterator begin();
解释:begin()函数返回一个迭代器,指向字符串的第一个元素.

end
语法:iterator end();
解释:end()函数返回一个迭代器,指向字符串的末尾(最后一个字符的下一个位置).

rbegin
语法:const reverse_iterator rbegin();
解释:rbegin()返回一个逆向迭代器,指向字符串的最后一个字符。

rend
语法:const reverse_iterator rend();
解释:rend()函数返回一个逆向迭代器,指向字符串的开头(第一个字符的前一个位置)。

四个函数的指示位置说明

用法举例:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string str1,str2;
    cin >> str1;
    //定义一个正向迭代器
    string::iterator ptr1 = str1.begin();
    //正向输出字符串
    while (ptr1 != str1.end())
        cout << *(ptr1++) << " ";
    cout << endl;

    cin >> str2;
    //定义一个逆向迭代器
    string::reverse_iterator ptr2 = str2.rbegin();
    //逆向输出字符串
    while (ptr2 != str2.rend())
    //注意逆向迭代器移动方向相反,所以从尾部仍然通过++来移动
        cout << *(ptr2++) << " ";
    cout << endl;
}
  • 29
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 1 正文 4 一、 C++string的使用 4 1.1 C++ string简介 4 1.2 string的成员 4 1.2.1 append 4 1.2.2 assign 5 1.2.3 at 5 1.2.4 begin 6 1.2.5 c_str 6 1.2.6 capacity 6 1.2.7 clear 7 1.2.8 compare 7 1.2.9 copy 7 1.2.10 _Copy_s 7 1.2.11 data 7 1.2.12 empty 7 1.2.13 end 7 1.2.14 erase 7 1.2.15 find 7 1.2.16 find_first_not_of 8 1.2.17 find_first_of 8 1.2.18 find_last_not_of 9 1.2.19 find_last_of 9 1.2.20 get_allocator 9 1.2.21 insert 9 1.2.22 length 9 1.2.23 max_size 9 1.2.24 push_back 9 1.2.25 rbegin 9 1.2.26 rend 9 1.2.27 replace 9 1.2.28 reserve 11 1.2.29 resize 12 1.2.30 rfind 12 1.2.31 size 12 1.2.32 substr 12 1.2.33 swap 12 1.3 string的构造 12 1.4 string的重载运算符 12 1.5 string与algorithm相结合的使用 13 1.5.1 string与remove 13 1.5.2 string与unique、sort 13 1.5.3 string与search 13 1.5.4 string和find、find_if 14 1.5.5 string与copy、copy_if 14 1.5.6 string与count、count_if 15 1.6 string与wstring 15 1.6.1 简介 15 1.6.2 wstring实例 15 1.6.3 wstring与控制台 16 1.6.4 string与wstring的相互转换 17 1.7 stringC++流 22 1.7.1 C++流简介 22 1.7.2 string与iostream、fstream 22 1.8 格式化字符串 23 1.8.1 简单常用的C方法 23 1.8.2 boost的方法 23 1.8.3 stlsoft + fastformat 23 1.9 string与CString 24 二、 boost字符串算法库 24 2.1 boost字符串算法库导论 24 2.1.1 boost.algorithm.string是什么? 24 2.1.2 相关 24 2.1.3 boost.range导论 24 2.1.4 boost.regex导论 24 2.1.5 boost.algorithm.string的DNA 24 2.2 boost字符串算法解密 24 2.2.1 修剪(trim.hpp) 24 2.2.2 转换(case_conv.hpp) 24 2.2.3 判断式、断言函数(predicate.hpp)【Predicates】 24 2.2.4 查找 24 2.2.5 删除和替换 24 2.2.6 分割和组合 24 2.2.7 分词 24 2.2.8 其它 24 三、 C字符串 24 3.1 C字符串常用算法 24 3.1.1 strcpy wcscpy 24 3.1.2 strcat wcscat 24 3.1.3 strchr wcschr 24 3.1.4 strcmp wcscmp 24 3.1.5 stricmp wcsicmp 24 3.1.6 strlen wcslen 24 3.1.7 strlwr/_strlwr wcslwr/_wcslwr 24 3.1.8 strncat wcsncat 24 3.1.9 strcspn wcscspn 24 3.1.10 strdup/_strdup wcsdup/_wcsdup 24 3.1.11 strncpy wcsncpy 24 3.1.12 strpbrk wcspbrk 24 3.1.13 strrev/_strrev wcsrev/_wcsrev 24 3.1.14 strset/_strset/_strset_l wcsset/_wcsset/_wcsset_l 24 3.1.15 strstr/wcsstr 24 3.1.16 strtok/wcstok 24 3.1.17 strupr/_strupr wcsupr/_wcsup
附List用法实例: #include <iostream> #include <list> #include <numeric> #include <algorithm> using namespace std; //创建一个list容器的实例LISTINT typedef list<int> LISTINT; //创建一个list容器的实例LISTCHAR typedef list<char> LISTCHAR; void main(void) { //-------------------------- //用list容器处理整型数据 //-------------------------- //用LISTINT创建一个名为listOne的list对象 LISTINT listOne; //声明i为迭代器 LISTINT::iterator i; //从前面向listOne容器添加数据 listOne.push_front (2); listOne.push_front (1); //从后面向listOne容器添加数据 listOne.push_back (3); listOne.push_back (4); //从前向后显示listOne的数据 cout<<"listOne.begin()--- listOne.end():"<<endl; for (i = listOne.begin(); i != listOne.end(); ++i) cout << *i << " "; cout << endl; //输出为 1 2 3 4 //从后向后显示listOne的数据 LISTINT::reverse_iterator ir; cout<<"listOne.rbegin()---listOne.rend():"<<endl; for (ir =listOne.rbegin(); ir!=listOne.rend();ir++) { cout << *ir << " "; } cout << endl; //输出为 4 3 2 1 //使用STL的accumulate(累加)算法 int result = accumulate(listOne.begin(), listOne.end(),0); cout<<"Sum="<<result<<endl; cout<<"------------------"<<endl; //输出为 Sum=10 //-------------------------- //用list容器处理字符型数据 //-------------------------- //用LISTCHAR创建一个名为listOne的list对象 LISTCHAR listTwo; //声明i为迭代器 LISTCHAR::iterator j; //从前面向listTwo容器添加数据 listTwo.push_front ('A'); listTwo.push_front ('B'); //从后面向listTwo容器添加数据 listTwo.push_back ('x'); listTwo.push_back ('y'); //从前向后显示listTwo的数据 cout<<"listTwo.begin()---listTwo.end():"<<endl; for (j = listTwo.begin(); j != listTwo.end(); ++j) cout << char(*j) << " "; cout << endl; //输出为 B A x y //使用STL的max_element算法求listTwo的最大元素并显示 j=max_element(listTwo.begin(),listTwo.end()); cout << "The maximum element in listTwo is: "<<char(*j)<<endl; } //输出为: The maximum element in listTwo is: y
C++string类提供了许多有用的函数来处理字符串。其一些函数包括: 1. c_str():将string字符串转换为C风格的字符串,并返回该字符串的const指针(const char*)。这个函数可以将const string转换为const char*。例如: ```cpp string s1("1234567"); const char* s2 = s1.c_str(); ``` 2. clear():删除字符串的所有字符。可以使用erase()函数来删除指定位置的字符或一定范围内的字符。例如: ```cpp string str = "123456789"; str.erase(3, 3); // 删除从位置3开始的3个字符 str.erase(str.begin() + 3); // 删除位置3的字符 str.erase(str.begin() + 3, str.begin() + 6); // 删除位置3到位置6之间的字符 ``` 3. 迭代器遍历:可以使用正向迭代器或反向迭代器来遍历字符串。例如: ```cpp string s1("abcdef"); // 正向迭代器 string::iterator iter = s1.begin(); for (; iter < s1.end(); iter++) { cout << *iter; } cout << endl; // 反向迭代器 string::reverse_iterator riter = s1.rbegin(); for (; riter < s1.rend(); riter++) { cout << *riter; } cout << endl; ``` 4. 字符替换:可以使用replace()函数来替换字符串的字符。例如: ```cpp string s = "ABCDEFG"; s.replace(1, 3, "123"); // 将位置1开始的3个字符替换为"123" ``` 5. 大小写转换:可以使用tolower(char)和toupper(char)函数将字符进行大小写转换。也可以使用transform()函数将整个字符串转换为大写或小写。例如: ```cpp string s = "ABCDEFG"; for (int i = 0; i < s.size(); i++) { s\[i\] = tolower(s\[i\]); } cout << s << endl; // "abcdefg" transform(s.begin(), s.end(), s.begin(), ::toupper); cout << s << endl; // "ABCDEFG" ``` 6. 数值转换:可以使用stoi()、atoi()、to_string()和c_str()函数来进行字符串和数值之间的转换。例如: ```cpp string s1 = "123"; int a = stoi(s1); // 将字符串转换为整数 int b = atoi(s1.c_str()); // 将C风格的字符串转换为整数 string str1 = to_string(a); // 将整数转换为字符串 const char* str2 = str1.c_str(); // 将字符串转换为C风格的字符串 ``` 这些函数是C++string类的一部分,可以帮助我们更方便地处理字符串。 #### 引用[.reference_title] - *1* *2* *3* [C++ string常用函数用法总结](https://blog.csdn.net/qq_61514490/article/details/126165076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值