
(1)strlen(str),求字符串长度;
(2)strcmp(a,b),比较两个字符串的大小(按字典序),ab返回;
(3)strcpy(a,b),将字符串b复制给从a开始的字符数组;
二、字符串的常用操作(#include#include#include using namespace std; int main() { string s1,s2; string s3=(3,'c');//s3的内容是:ccc; cin>>s1>>s2; cout< 2.读入含有空格的字符串 cin读到空格就会终止
类型 函数 输入 读入 string s getline(cin,s) ab cd ab cd char s[100] cin.getline(s,100) ab cd ab cd char s[100] fgets(s,100,stdin)
但是要注意最后会读入一个回车
ab cd ab cdn fgets回车去除方法:
if(s[strlen(s)-1]=='n') s[strlen(s)-1]=0;3.string的常用函数(1)s.empty() 判断string是否为空,如果为空返回1,不是空返回0;
(2)s.size() string的长度,比strlen快;
(3)s.pop_back() 把string的最后一个字符删掉;
(4)s.substr(0,3) 返回某一范围的字符,如果只有一个参数,返回的是该位置开始之后的所有字符;
4.可以直接比较,直接进行相加string s1="hello ",s2="world"; string s3=s1+s2; s3+=s1;//可以进行累加操作 s3=s3+" ooo "+'!';//可以直接加字符串和字符 string s4="hello"+",";//错误,两个运算对象都不是string; string s5=s1+","+"world";//正确,每个加法都有一个运算符是string string s7="hello"+","+s2;//错误,运算是从左往右计算的5.string可以当作字符数组输出string s="hello world!"; //方法1 for(int i=0;i三、stringstream ssin(s)(#include ) 1.sprintf函数
定义了三个类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。 主要用来进行数据类型转换。比sscanf,sprintf更加安全。 int main(){ char str[66]={0}; int n=1000; sprintf(str,"%d",n); //将数字变量转化为字符串 sprintf(str,"0x%X",n); //得到整形变量16进制字符串 sprintf(str,"0%o",n); //得到整形变量8进制字符串 const char *s1="hello"; const char *s2="world"; sprintf(str,"%s %s",s1,s2); //连接多个字符串 cout<2.sscanf函数 #include3.stringstream函数#include int main(){ char s1[100]; sscanf("12345","%4s",s1); printf("%sn",s1);//输出1234 *取指定长度的字符串 char s2[100],s3[100],s4[100]; gets(s2);//输入aaa bbb ccc sscanf(s2,"%s%s",s3,s4); printf("%s %sn",s3,s4); //输出aaa bbb *读入字符串 char s5[100]; sscanf("1234abcd","%*d%s",s5); printf("%sn"s5); //输出abcd *%*d和%*s加了(*)表示跳过此数据不读入 char s6[100]; sscanf("123+abc","%[^+]",s6); printf("%sn",s6); //输出1234 *取到指定字符为止的字符串,如此例,读到‘+’为止的字符串 char s7[100]; sscanf("1234abcd12","%[^a-z]",s7); printf("%sn",s7); //输出1234 *取到指定字符集为止的字符串,如此例,读到小写字母为止的字符串 char s8[100]; sscanf("1234abcdABCD12","%[1-9a-z]",str); printf("%sn",s8); //输出1234abcd *取仅包含指定字符集的字符串,如此例,取仅包含数字和小写字母的字符串 return 0; } 使用stringstream可将字符串初始化为一个类似cin的东西,之后就可以读取出来任意我们需要格式的信息(以空格为界)
基本用法:
#include#include using namespace std; int main { string s; getline(cin,s); stringstream ssin(s); //将string s初始化为一个字符串流,定义完后将ssin当作cin就可以了 //和cin几乎一样,不同的是在s字符串中读取信息 int a,b; string str; double c; ssin>>a>>str>>b>>c; cout<
例题:
输入一个字符串,以回车结束(字符串长度不超过 100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入格式:
输入共 3 行。第 1 行是包含多个单词的字符串 s;
第 2 行是待替换的单词 a(长度不超过 100);
第 3 行是 a 将被替换的单词 b(长度不超过 100)。
输出格式:
共一行,输出将 s 中所有单词 a 替换成 b 之后的字符串。输入样例:
You want someone to help you
You
I输出样例:
I want someone to help you#include#include using namespace std; int main(){ string s,a,b; getline(cin,s); cin>>a>>b; stringstream ssin(s); string str; while(ssin>>str) if(str==a) cout<