String是字符串的头文件,对string的应用这几天做题有点小的心得,拿出来分享一下;
首先字符串的输入,简单的字符串输入大家都会
char a[20];
cin>>a;
但是如果带有空格的输入该如何处理?!
所以又学会了个gets();在c和c++中gets()都可以使用,但我昨天做题使用gets()却不是那么得心应手;看代码:
int main()
{
int t;cin>>t;
while(t--)
{
char a[20];
gets(a);
cout<<a<<endl;
}
return 0;
}
很简单的程序是吧,但结果却不对,我输入int t;却提前输出一行,会的同学一看就知道你这少了点东西啊,是的,的确少了点什么,getchar()没错就是它;getchar()是一个个读取字符的函数,少了他我第一次循环就没有了,所以细节很重要,有时候就是一个细节能让你一天看不出代码错在那;
当然学过c的同学还知道另一种输入方法:
char a[100];
scanf("%[^\n]%*c",a);
这个事输入遇到换行符停止,其实这儿^就是对停止符号的确认你可以换成别的;
scanf()输入功能比c++中的<<输入流功能强大的多,还有好多,在这不一一举例;
在c++中的字符串可以用#Include<string>包含,定义一个string 变量,
string 作为一个字符串,与字符串数组有很多相似的地方,只不过表达的方式不同,
string 可以获取字符串中的任意字符将他们连接成字符串
string s;
char a[30];
cin>>a;
for(int i=2;i<=4;i++)
s+=a[i];
当然还有很多,比如求字符串的长度,在字符数组中我们用strlen( char *s),但字符串里就没那么麻烦
string s;
s.length();
这样就可以了;
还有什么求开始,结尾的,其实和字符数组差不多,但值得一提的是我们可以从字符串里提取字符串
string s;
cin>>s;
s=s.substr(0,2);
substr(int a,int b)是字符串库中的函数,求串中(a到b)的子串,如果你不想从新申请一个字符串,可以这样初始化s=s.substr(0,0);
是不是很方便啊!
对字符串的操作还有几个函数要说说strstr(const *char,const char[])
这个函数是返回第二个字符串的位置的指针你也可以直接输出
char a[122],b[122];
cin>>a;
char *aa=strstr(a,"a");
cout<<aa;
这个输出找到第一个a后面的所有字符;