C++字符串处理方法合集---我的第一篇博客
#include<string> using std::string;
1.string对象的定义和初始化
string s1;//默认构造函数s1为空串 string s2(s1);//将s2初始化为s1的一个副本 string s3("value");//将s3初始化为一个字符串字面值副本 string s4(n,'c');//将s4初始化为字符'c'的n个副本
2.string对象的读写
(1)cin读入:
- 读取并忽略开头所有的空白字符(SP TAB /n)
- 读取字符直至再次遇到空白字符,读取终止。
string s; cin>>s; cout<<s<<endl;
(2)读入未知数目的string对象
int main() { string word; while(cin>>word) { cout<<word<<endl; } return; }
(3)使用getline读取整行文本
getline 函数从输入流的下一行读取,并保存读取的内容到不包括换行符。和输入操作符不一样的是,getline 并不忽略行开头的换行符。只要 getline 遇到换行符,即便它是输入的第一个字符,getline 也将停止读入并返回。如果第一个字符就是换行符,则 string 参数将被置为空 string。
int main() { string line; // read line at time until end-of-file while(getline(cin, line)) cout << line << endl; return0; }
3.string对象的操作
s.empty();//s为空返回true s.size();//返回字符个数 s[n];//不必多言
but! 坑爹的是:size()返回的是string::size_type类型的值!!
虽然我们不知道 string::size_type 的确切类型,但可以知道它是 unsigned 型。
这样往往会导致严重的运行时错误。
4.string对象中字符的处理
cctype头文件中定义了各种字符操作函数
#include<cctype> isalnum(c)//字母或数字 true isalpha(c)//字母 iscntrl(c)//控制字符 //太多了,不列了.....
以上参考《C++ primer》
5.字符串查找
string str; cin >> str; str.find("ab");//返回字符串ab在str的位置 str.find("ab",2);//在str[2]~str[n-1]范围内查找并返回字符串ab在str的位置 str.rfind("ab",2);//在str[0]~str[2]范围内查找并返回字符串ab在str的位置 //first系列函数 str.find_first_of("apple");//返回apple中任何一个字符首次在str的位置 str.find_first_of("apple",2);//返回apple中任何一个字符首次在str[2]~str[n-1]范围中出现的位置 str.find_first_not_of("apple");//返回除apple以外的任何一个字符在str中首次出现的位置。 str.find_first_not_of("apple",2);//返回除apple中任何一个字符首次在str[2]~str[n-1]范围中出现的位置 //last系列函数 str.find_last_of("apple");//返回 apple 中任何一个字符最后一次在 str 中出现的位置 str.find_last_of("apple",2);//返回 apple 中任何一个字符最后一次在 str[0]~str[2] 范围中出现的位置 str.find_last_not_of("apple");//返回除 apple 以外的任何一个字符在 str 中最后一次出现的位置 str.find_last_not_of("apple",2);//返回除 apple 以外的任何一个字符在 str[0]~str[2] 范围中最后一次出现的位置 //以上函数如果没有找到,均返回string::npos cout << string::npos;
6.子串
str.substr(3);//返回[3]及以后的子串 str.substr(2,4);//返回str[2]~str[2+4-1]子串(即从[2]开始4个字符组成的字符串)
7.替换
str.replace(2,4,"sz");//返回将[2]~[2+4-1]的内容替换为"sz"后的新字符串 str.replace(2,4,"abcd",3);//返回把[2]~[2+4-1]的内容替换为"abcd"的前3个字符后的新字符串
8.插入
str.insert(2,"sz");//从 [2] 位置开始添加字符串 "sz",并返回形成的新字符串 str.insert(2,"abcd",3);//从 [2] 位置开始添加字符串 "abcd" 的前 3 个字符,并返回形成的新字符串 str.insert(2,"abcd",1,3);//从 [2] 位置开始添加字符串 "abcd" 的前 [2]~[2+(3-1)] 个字符,并返回形成的新字符串
9.追加
str.push_back('a');//在 str 末尾添加字符'a' str.append("abc");//在 str 末尾添加字符串"abc"
10.删除
str.erase(3);//删除 [3] 及以后的字符,并返回新字符串 str.erase(3,5);//删除从 [3] 开始的 5 个字符,并返回新字符串
11.交换
str1.swap(str2);//把 str1 与 str2 交换
12.int转string
string str= to_string(num);
Code Rush!代码奔腾

浙公网安备 33010602011771号