Bootstrap

C++字符数组和字符串的各种输入

前言:

                这是本人第一次发博客,大家的支持是对我最大的鼓励

                话不多说,上干货!

正文:

1. 对单个字符进行输入(包括空格,换行等)

字符数组:

        第一种:

                函数:scanf("%c",        )

                介绍:对第 i 个字符进行输入:scanf("%c",&str[i]);

                注意:可以对空格,Tab等进行输入。

                代码如下

char str[MAXN];
scanf("%c",&str[i]);    //对第i个字符进行输入

        第二种:

                函数getchar()

                介绍:对第 i 个字符进行输入:str[i]=getchar();

                注意:可以对空格,Tab等进行输入。

                代码如下:

char str[MAXN];
str[i]=getchar();    //对第i个字符进行输入

字符串:

        第一种:

                 函数:scanf("%c",&str[i])

                介绍:对第 i 个字符进行输入:scanf("%c",&str[i]);

                注意:可以对空格,Tab等进行输入。

                代码如下:

string str;
scanf("%c",&str[i]);    //对第i个字符进行输入

        第二种:

                函数getchar()

                介绍:对第 i 个字符进行输入:str[i]=getchar();

                注意:可以对空格,Tab等进行输入。

                代码如下:

string str;
str[i]=getchar();    //对第i个字符进行输入

2  对一个字符串进行输入(字符串中间不能有空格)

字符数组:

  第一种:

                函数:scanf("%s",        )

                介绍:对一个字符串进行输入:scanf("%s",str);

                注意:中间不能包含空格,换行等。

                代码如下

char str[MAXN];
scanf("%s",str);    //对一个字符串进行输入

字符串:

        第一种:

                函数:scanf("%s",        )

                介绍:对一个字符串进行输入:scanf("%s",str[0]);

                注意:使用scanf进行输入时要事先分配空间,否则程序会异常终止或报错

                            中间不能包含空格,换行等。

                代码如下

string str;str.resize(maxn)       //事先分配空间(不建议使用)
scanf("%s",str[0]);    //对一个字符串进行输入

3  对一行进行输入(可以包括空格)

字符数组:

         第一种:

                函数:gets()

                介绍:对一行字符串进行输入:gets(str);

                注意:对一行字符串进行输入,中间可以包含空格,以换行符为结束标志,但是末尾的换行符(\n)被替换成了\0 ( 可以理解啥用都没有,就是作为结束标志 )。

                代码如下

char str[MAXN]
gets(str);        //对一行字符串进行输入

字符串:

        第一种:

                函数:getline(   ,   )         

                介绍:对一行字符串进行输入:getline(cin,str);

                注意:对一行字符串进行输入,中间可以包含空格,以换行符为结束标志,在使用getline 

读入一整行时,若是前面是使用getchar()、cin这类读入了一个字母,但是不会读入后续换行\n符号

或者空格的输入时,再接getline()就容易出现问题,这是因为输入数字之后,敲回车,产生的换行

符仍然滞留在输入流了,接着就被getline(cin,s)给读进去了,此时的s=“\n”,所以实际上s只是读入了

一个换行符\n。 

                代码如下

	string str;
	getline(cin,str);    对一行字符串进行输入

4  不停地输入

字符数组:

        第一种:

                函数:getchar( )  和  while()

                介绍:一直进行输入,直到没有输入时停止,while(str[i++])=getchar());

如果想添加结束条件在其中加上"   !='   '   ",例如想加上的结束条件为换行(\n),   

while(str[i++])=getchar()!=‘\n’);

                注意:如果不加结束条件,那么只有当没有输入时才会停止,从键盘输入时可以用Ctrl+Z,结束输入。

                代码如下

char str[MAXN];
while(str[i++]=getchar())    //不停的输入
                             //注意:i刚开始要清零


//while(str[i++]=getchar()!='\n');  
//以换行作为结束标志。

字符串:

   第一种:

                函数:getchar( )  和  while()

                介绍:一直进行输入,直到没有输入时停止,while(str[i++])=getchar());

如果想添加结束条件在其中加上"   !='   '   ",例如想加上的结束条件为换行(\n),   

while(str[i++])=getchar()!=‘\n’);

                注意:如果不加结束条件,那么只有当没有输入时才会停止,从键盘输入时可以用Ctrl+Z,结束输入。

                代码如下

string str;
while(str[i++]=getchar())    //不停的输入
                             //注意:i刚开始要清零


//while(str[i++]=getchar()!='\n');  
//以换行作为结束标志。

5  特殊要求的输入

字符数组:

           第一种:

                        函数:cin.getline(    ,    ,    )

                        介绍:上述函数第一个参数为数组名,第二个参数为所输入的字符个数,第三个参数是输入的结束标志。例如对字符数组str的200个字符进行输入,以换行符作为结束标志,cin.getline(str,200,'/n');

                        注意:输入时遇到结束标志,结束标志并不被输入进去,可以输入空格和换行等。

                        代码如下

char str[MAXN];
cin.getline(a,200,'\n);//对字符数组str的200个字符进行输入,以换行符作为结束标志

6  其他特殊输入:

cin、cin.get()、cin.getline()、getline() 四种特殊输入详解

后记:

        各位,这是本人第一发博客,因为是第一次,所以很多地方会有不足之处,还请各位谅解!

        希望大家能对本人有更多的支持!

;