首页 > 代码库 > c++的字符串

c++的字符串

字符串不是太难,但特别多细节,一不注意就会错qaq

到现在为止都没打完。。。

但还是先写了。。。(先声明,本人Pascal转c++,打程序时总少不了尴尬。。。)

1。输入输出

输入:

1)scanf:(可读入多个字符串)

如scanf("%s%s%s",&s1,&s2,&s3)到空格就换一个

一定要加&,不然会错,吃了好多次亏%>_<%

2)gets(只能读一个字符串,好处是可以一下读一行,很好用。。)

输出:

1)printf:

只输出字符串,不输出单个字符,(和pascal差挺远)

2)puts(字符串和换行符,直接换行,很棒。。)

当然输入还有一种很作弊的方法:

看下题:

一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。

Input

一行,一个字符串(长度不超过200),句子的头和尾都没有空格。

Output

过滤之后的句子。

Sample Input

Hello      world.This is    c language.

Sample Output

Hello world.This is c language.

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
    string s;
    while (cin>>s) cout<<s<< ;
}

迷之方法。。。

 

2。一些字符串处理函数(单个字符串处理下面说)

左函数格式,右函数功能

strupr(字符串名)
 
 
 
将字符串中小写字母换成大写字母
 
 
strcat(字符串名1,字符串名2)
 
 
将字符串2连接到字符串1后边,返回字符串1的值。
 
strncat(字符串名1,字符串名2,长度n)
 
 
将字符串2前n个字符连接到字符串1后边,返回字符串1的值。
 
 
strcpy(字符串名1,字符串名2)
 
 
将字符串2复制到字符串1后边,返回字符串1的值。
 
 
strncpy(字符串名1,字符串名2,长度n)
 
将字符串2前n个字符复制到字符串1后边,返回字符串1的值。
 
 
strcmp(字符串名1,字符串名2)
 
 
比较字符串1和字符串2的大小,比较的结果由函数带回;
如果字符串1>字符串2,返回一个正整数;
如果字符串1=字符串2,返回0;
如果字符串1<字符串2,返回一个负整数;
 
strncmp(字符串名1,字符串名2,长度n)
 
比较字符串1和字符串2的前n个字符进行比较,函数返回值的情况同strcmp
 
 
strlen(字符串名)
 
 
计算字符串的长度,终止符’\0’不算在长度之内
 
 
strlwr(字符串名)
 
 
将字符串中大写字母换成小写字母
 

目前没怎么用到,但以后难题还是挺有用的。。。(难题就是一个个小模板混在一起。。)

3.insert() //插入字符

erase() //删除字符

 clear() //删除全部字符
 replace() //替换字符

(这些天常用的)

 

4。说一说打字符串面临的问题

1)超级麻烦的字符串读入(但后来发现的puts和gets好用到爆炸。。)

还有一种很巧妙的方法

char a;
    string s="";
    while ((scanf("%c",&a)==1)&&(a!=\n)) 
    {
       s+=a;
    }

虽然很蠢,还是可以用的。。。

2)一个小细节:字符串的都是从0开始截取字符,如果不注意,超容易错。。。

3)针对单个字符串,有很多方法完成程序

但前面一定要加s.(s为简单的字符串)

 

练字符串的特别感悟:

当你的程序出问题运行不到时,

1.想想你的数组是不是开大了(不要问我为什么)

2.想想用scanf有没有加&(错最多)

3.想想你的字符能不能换行(不能的话改)

4.你的字符最好从0输入

 

c++的字符串