C++文本处理——字符串语法
2021/8/9 14:05:55
本文主要是介绍C++文本处理——字符串语法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C++字符串语法学习
String 类
1.0 源
STL
中basic_string
类实例化
1.1 构造方法
string s1; // s1 = "" string s2("Hello"); // s2 = "Hello" string s3(4,'K'); // s3 = "KKKK" string s4("12345",1,3); // s4 = "234" string s5="abcde"; //s5 = "abcde"
1.2 赋值方法
直接赋值方法支持char*
指针类(常量或变量)、char
类(常量或变量)
string s; s = "12345"; // 直接赋值常量char*类值 char* c = "abcd"; s = c; // 直接赋值变量char*类值 s = 'q'; // 直接赋值变量char类值变量(常量同理)
assign
对象函数,用于赋值。
string s,t="aaag"; s.assign(t); // s = t s.assign("Hello"); // s = "Hello" s.assign(4,'K'); // s = "KKKK" s.assign("12345",1,3); // s = "234"
1.3 求字符串长度
size
和length
都可以直接求出字符串长度
string s = "abcdef" // s.length() = s.size() = 6
注意:.size()
和.length()
的类型是unsigned int
可能发生错误。
下面是错误的写法:
string str="hello world"; if (-1 < str.length()) cout << "true"; else cout << "false";
下面是正确的写法:
string str="hello world"; if (-1 < (int) str.length()) cout << "true"; else cout << "false";
原因:强制类型转换将int
类型的-1
自然溢出为一个unsigned int
类型内较大的数。
1.4 字符串的连接
-
方法一:直接使用
+/+=
连接两个完整的字符串 -
方法二:使用成员函数
append
,如:string a="123",b="abc"; a.append(b); // a = "123abc" a.append(b,1,2); // a = "123abcbc" a.append(3,'K'); // a = "123abcbcKKK" a.append("ABCDE",2,3);// a = 123abcbcKKKCDE
1.5 字符串的比较
-
方法一:使用
</>/<=/>=/==
等符号按照字典序比较 -
方法二:使用
compare
成员函数- 返回
负数值
当前字符串较小 - 返回
0
和当前字符串完全相等 - 返回
正数值
另外一个字符串较小
string a="123",b="abc"; a.compare(1,2,b,1,2); // a字符串从下标为1开始的2个字符构成的子串和b字符串从下标为1开始的2个字符串构成的子串比较 a.compare(b,1,2); // a字符串和b字符串从下标为1开始的2个字符串构成的子串比较 a.compare(1,2,b); // a字符串从下标为1开始的2个字符构成的子串和b字符串比较 a.compare(b); // a字符串和b字符串比较
- 返回
1.6 求字符串的子串
使用substr
函数
a.substr(2,3); // 求a字符串从下标为2开始的3个字符构成的子串 a.substr(2); // 求a字符串从小标为2开始到末尾的子串
1.7 交换字符串
使用swap
函数
string a="123",b="abc"; a.swap(b); swap(a,b); // 上述两条语句都实现了a字符串和b字符串的交换
1.8 字符串操作
1.8.1 查找
find
从前到后查找第1次出现的字符或者子串位置。rfind
从后到前查找第1次出现的字符或者子串位置。find_first_of
从前往后查找第1次出现某字符串中包含的任一字母出现的位置。find_last_of
从后往前查找第1次出现某字符串中包含的任一字母出现的位置。find_first_not_of
从前往后查找第1次出现某字符串中未包含的任一字母出现的位置。find_first_not_of
从后往前查找第1次出现某字符串中未包含的任一字母出现的位置。
若未找到,返回-1
。
string a="aabbcdefghijk"; printf("%d\n",a.find('a')); // 输出 0 printf("%d\n",a.find("abb")); // 输出 1 printf("%d\n",a.find_first_of("bcd")); // 输出 2 printf("%d\n",a.find_last_of("bcd")); // 输出 5 printf("%d\n",a.find_first_not_of("abc")); // 输出 5 printf("%d\n",a.find_last_not_of("abc")); // 输出 12
1.8.2 替换
使用replace
函数
a.replace(1,2,"abcde",1,3); // 将字符串a下标为1开始2个字符构成的子串替换为“abcde”第1个字符开始3个字符构成的子串 a.replace(1,2,"abcde"); // 将字符串a下标为1开始2个字符构成的子串替换为“abcde” a.replace(1,2,4,'K'); // 将字符串a下标为1开始2个字符构成的子串替换为“KKKK”
1.8.3 删除
使用erase
函数
a.erase(2,3); // 删除字符串a下标为2开始的3个字符构成的子串 a.erase(3); // 删除字符串a下标为3开始到字符串末尾构成的子串
1.8.4 插入
使用insert
函数
a.insert(i,t); //在字符串a下标为i处插入字符串t,i位置及其以后的原来值向后移动
1.9 输入输出
-
cin/cout
: 默认遇到空格回车制表符等空白字符即字符串输入结束。 -
gets
转化:可以输入含有空格键的数据:char str[105]; gets(str); string a=str; cout<<str;
1.10 STL相关
1.10.1 遍历
string s="0123456"; for (string::iterator p=s.begin();p!=s.end();++p) { putchar(*p); }
1.10.2 排列和打乱
string s="0123456"; random_shuffle(s.begin(),s.end()); // 将字符串中所有元素随机打乱 next_permutation(s.begin(),s.end()); // 求当前字符串字典序下一个排列
这篇关于C++文本处理——字符串语法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Nacos多环境配置学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos配置中心学习入门指南
- 2024-12-27Nacos配置中心学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos初识学习入门:轻松掌握服务发现与配置管理
- 2024-12-27Nacos初识学习入门:轻松掌握Nacos基础操作
- 2024-12-27Nacos多环境配置学习入门