输入字符串
输入是一整行的字符串的:
C 语法:
1 |
char buf[20]; |
2 |
gets (buf); |
C++ 语法:
如果用 string buf;
来保存:
1 |
getline(cin, buf); |
如果用 char buf[255];
来保存:
1 |
cin.getline(buf, 255); |
在多个字符串之间用一个或多个空格分隔:
1 |
scanf ( "%s %s" , str1, str2); |
字符串之间用回车符作分隔,使用 gets
函数:
1 |
gets (str1); |
2 |
gets (str2); |
通常情况下,接受短字符用scanf
函数,接受长字符用 gets
函数。
而 getchar
函数每次只接受一个字符,经常 c=getchar()
这样来使用。
getline
是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。它的函数声明形式(函数原型)如下:
1 |
istream& getline( char line[], int size, char endchar = '\n' ); |
不用管它的返回类型,来关心它的三个参数:
char
line[]
: 就是一个字符数组,用户输入的内容将存入在该数组内。
int
size
: 最多接受几个字符?用户超过 size
的输入都将不被接受。
char
endchar
:当用户输入 endchar
指定的字符时,自动结束。默认是回车符。
结合后两个参数,getline
可以方便地实现: 用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车来结束输入。
1 |
char name[4]; |
2 |
cin.getline(name, 4, '\n' ); |
由于 endchar
默认已经是 '\n',所以后面那行也可以写成:
1 |
cin.getline(name, 4); |
最后需要说明的是,C++的输入输出流用起来比较方便,但速度比C要慢得多。在输入输出量巨大时,用C++很可能超时,应采用C的输入输出。