c++字符串可以分为三类
- 字符常量:“Hello, world!”(注:双引号- 字符串;单引号- 字符)
- C风格字符串:以“\0”为结尾的一维数组
- C++引入的string类类型
C风格字符串
C++ 编译器会在初始化数组时,自动把 ‘\0’ 放在字符串的末尾
常用函数
函数 | 操作 |
---|---|
strcpy(s1, s2) | 复制字符串 s2 到字符串 s1。 |
strcat(s1, s2) | 连接字符串 s2 到字符串 s1 的末尾。 |
strlen(s1) | 返回字符串 s1 的长度。 |
strcmp(s1, s2) | 如果 s1 和 s2 是相同的,则返回 0; 如果 s1<s2 则返回值小于 0; 如果 s1>s2 则返回值大于 0。 |
strchr(s1, ch) | 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。 |
strstr(s1, s2) | 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。 |
string类类型
string类类型在使用上更为灵活,如在定义时不需要指定数组大小,在复制拼接时只需要=、+等运算符即可完成
常用函数
函数 | 操作 |
---|---|
append() | 在字符串的末尾添加字符 |
find() | 在字符串中查找字符串 |
insert() | 插入字符 |
length() | 返回字符串的长度 |
replace() | 替换字符串 |
substr() | 返回某个子字符串 |
字符串的输入输出方式
输入
- cin>>s1;//遇到空格停止输入
- cin.getline(s1) //char[],整行输入
getline(cin,s1) //string,整行输入 - gets(); //整行输入
输出
字符数组的输出可以直接以cout<<s1;的形式输出,不必像整型数组一样循环按位输出
VS2017 字符数组函数的安全性问题
Vs2017 使用 strcpy 的时候会报错,提示 strcpy 是不安全的,需要用 strcpy_s 代替
或者在设置中修改兼容性https://blog.csdn.net/liu_12345_liu/article/details/82078972