开篇寄语
C++ 是最强大的编程语言之一,借助其内置方法执行排序、搜索和反转等操作。在本文中,您将学习 12 个 C++ 字符串方法,这些方法可帮助您使用一小部分代码来对字符串执行操作,就像是在使用python和js在处理字符串(虽然并没有像这么简单),分享给大家。
内容详情
字符串方法是存储在字符串头文件中的预构建函数。您可以通过导入字符串头文件来使用它们:
#include <string>
接下来命名一个字符串,以“Hello World”为例:
string str = “Hello World”;
1.begin()
- C++ 中的 begin() 方法返回到字符串开头的迭代器。使用 auto 关键字创建迭代器并使用 str.begin() 存储字符串变量的初始引用,试举一例:
auto i = str.begin(); cout<<"The first character in the string str is: "<<*i<<endl; //输出结果为The first character in the string str is: H
2.end()
- end() 字符串方法返回到字符串末尾的迭代器,此代码打印字符串变量的最后一个字符:
auto i = s.end()-1; cout<<"The last character in the string s is: "<<*i<<endl; //输出结果为The first character in the string s is: d
3.push_back()
- push_back() 方法在字符串的末尾插入一个字符。通过执行此操作,字符串的大小增加 1,试举一例:
str.push_back('!'); cout<<str; //结果为Hello World!
4.pop_back()
- pop_back() 方法删除字符串的最后一个字符。以下是在字符串 str 上尝试此方法的方法:
str.pop_back(); cout<<str<<endl; //结果为Hello Worl
5.size()
- size() 方法可帮助您计算字符串的长度,试举例如下:
cout<<"The size of the string str is "<<str.size()<<endl; //结果为11
6.copy()
- copy() 方法复制一个完整的字符串或子字符串。它接受三个参数:字符数组、子字符串的长度和字符串应该从哪里开始复制,试举例如下:
char str2[50]; str.copy(str2, 5,1); cout<<"The value in str2: "<<str2<<endl; //结果为ello
7.swap()
- swap() 方法可帮助您相互交换两个字符串,此方法的语法是:
string1.swap(string2)
试举例如下:
string str = “Welcome To MUO”; string str2 = "Hi There"; str.swap(str2); cout<<"String 1 str: "<<str<<endl; cout<<"String 2 str2: "<<str2<<endl; //结果为str2 = "Welcome To MUO", str = "Hi There"
8.getline()
- getline() 方法存储输入期间接受的字符流。此方法接受两个参数:cin 和字符串变量。
string s; cout<<"Enter a string"<<endl; getline(cin,s); cout<<s<<endl; //结果为: //Enter a string //Hello World
9.resize()
- resize() 方法通过动态增加或减少字符串来改变字符串的长度。它接受一个参数:要调整字符串大小的长度,试举例如下:
str.resize(10); cout<<"The value of str after resizing it: "<<str<<endl; //结果为The value of str after resizing it: Hello Worl
10.capacity()
- C++ 中的 capacity() 方法返回分配给字符串的容量。它可以等于或大于字符串的长度,试举例如下:
cout<<"The capacity of the string is "<<str.capacity()<<endl;
11.stoi()
- stoi() 方法有助于将字符串形式的数字转换为其数值。它接受一个参数:字符串变量。如果您的字符串变量除了数字之外还有其他字符,它会过滤掉它们。但是要使此方法起作用,非数字字符串字符必须跟在数字之后。如果字符出现在数字之前,它将返回一个错误,试举例如下:
string s1 = "123"; int v1 = stoi(s1); cout<<"Stoi() for s1: "<<v1<<endl; string s2 = "123 pass"; int v2 = stoi(s2); cout<<"Stoi() for s2: "<<v2; //结果为: //Stoi() for s1: 123 //Stoi() for s2: 123
12.rbegin() and rend()
- rbegin() 方法将反向迭代器的引用返回到末尾的字符串。类似地,rend() 方法将起始迭代器的引用返回到开头的字符串,试举例如下:
auto beg = str.rbegin(); auto end = str.rend()-1; cout<<"The last character is: "<<*beg<<endl; cout<<"The first character is: "<<*end<<endl; //结果为 //d //H
打印出来可以用for循环:
for(auto i=str.rbegin(); i!=str.rend(); i++){ cout<<*i; } //结果为dlrow olleH
既然您已经学会了实现字符串头的各种字符串方法,您就可以自信地探索 C++ 头文件中的更多预构建方法。从 sort() 和 reverse() 到 binary_search(),在编码世界中,几乎没有什么 C++ STL 无法完成的。
- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号