<string>

string s;

getline(cin,s); 读一行字符串,读入时不会舍弃缓冲区的最后回车符,故有时 需要getchar().,读入后会舍弃掉最后回车符,并加入\0。

scanf():读取字符串时,读入时会舍弃缓冲区的最后的回车符。

对于字符:cin的输入忽略空格和回车。scanf("%c",&i)等价于i = getchar(),换行符和回车都会被读入。

char str[100]; gets(str). 读入一行字符串后面的换行符和回车。

第一:

要注意不同的函数是否接受空格符、是否舍弃最后的回车符的问题。

读取字符时:

scanf()以Space、Enter、Tab结束一次输入,读入后不会舍弃最后的回车符(即回车符会残留在缓冲区中)。

 getchar()以Enter结束输入,也不会舍弃最后的回车符;

读取字符串时:

 scanf()以Space、Enter、Tab结束一次输入,读入字符串后不会舍弃最后的回车符!,即缓冲区仍有回车符。

gets()以Enter结束输入(空格不结束),接受空格,读入字符串后会舍弃最后的回车符!

scanf格式控制中,

空白符

空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。

非空白符

一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。