c++之string与char[]
字符串操作
A. Char 字符串函数
1、strcmp(s1,s2)
函数功能:比较字符串 s1 和 s2 的大小。
如果 s1 大于 s2,返回正数。
如果 s1 等于 s2,返回0。
如果 s1 小于 s2,返回负数。
字符串的比较规则:先比较长度,长度相同则逐一按照 ASCII 的数值大小比较。
2、strncmp(const char *s1,const char *s2, const n)
函数功能:
比较字符串 s1 和 s2 的前 n 个字符的大小。
如果 s1 大于 s2,返回正数。
如果 s1 等于 s2,返回0。
如果 s1 小于 s2,返回负数。
字符串的比较规则:先比较长度,按照 ASCII 的数值大小比较。
3、strlen(const char *s1)
函数功能:
返回字符串的长度。字符串末尾的 \0 不计入总长度。
4、strlwr(char *s1) #
函数功能:
将 s1 中的大写字母转化成小写字母。
调用后,s1 的内容被改变了。
5、strupr(char *s1)
函数功能:
将 s1 中的小写字母转化成大写字母。
调用后,s1 的内容被改变了。
B. String 字符串
string – 定义
字符串在 C++ 中很重要,而基础的 char [] 形式的字符串,在使用上不是很友好。
比如:str1、str2两个字符串,则 str1 = str2 这样的写法是【错误的】。但是使用【=】符合大多数人的习惯。
所以,后来的 C++ 中定义了一种 string 类型,来专门表示字符串。
#include < iostream >
int main()
{
std::string str1("da"); // 若使用“using namespace std;”,“std::”可不写
std::string str2 = "dashima";
str1 = str2; // 【正确】
return 0;
}
string – 输入输出
依然可以使用 cin 和 cout。
cin,请注意读取的时候,会忽略开头的【空格】【制表符】【换行符】,当遇到【空格】【制表符】【换行符】则停止读取。
S1.empty()
函数说明:用于判断S1是否为一个【空字符串】。
若是空的为1,不空为0.
S2.size()
函数说明:用于判断S2字符串的【长度】。
[] ,索引符号
说明:用于【读/写】该字符串中某一位的字符,【要是超出范围会报错】。
+ 和 +=, 合并字符串
说明:用于合并两个字符串。
= ,赋值
说明:修改 string 变量的值。
S1.insert(int pos,string s2)
说明:从pos开始,插入s2.
S1.substr(int pos,int n)
说明:返回从pos起的n个字符,类型为string.
S1.erase(int pos, int n)
函数说明:删除从下标 pos 起的 n 个字符。
S1.replace(int pos, int n, string s2)
函数说明:将从下标 pos 起的 n 个字符,替换为 s2。
S1.find(string s2, int pos)
函数说明:在下标 pos 起,查找 s2 第一次出现的位置。
S1.c_str()
函数说明:返回一个与s1内容相同的 C 语言风格的字符串临时指针。
C. 题目
说明:输入字符串,找出第一个b的位置并打印。替换所有a为c。删除所有xy。输出字符串。
输入示例:Aabcxydbcxyzzaacbcd
输出示例:2 Acbcdbczzcccbcd
#include<iostream>
using namespace std;
int main(){
string str;
cin>>str;//输入
cout<<str.find("b", 0)<<” “;//删除里面的b
for(int i=0;i>=0;i++){
int index_a=str.find("a",0);//找出a
if(index_a<0)//判断是否找尽
break;
str.replace(index_a,1,"c");//替换为c
}
for(int i=0;i>=0;i++){
int index_xy=str.find("xy",0);//找出xy
if(index_xy<0)//判断是否找尽
break;
str.erase(index_xy,2);//删除
}
cout<<str<<endl;//输出
return 0;
}