您的位置:首页 > 编程语言 > C语言/C++

C++中cin.get(),cin.getLine(),getChar(),getch()的区别

2017-12-02 12:06 661 查看
一、get()函数
get()函数除了可以用cin输入标准类型的数据外,还可以用istream类流对象的一些成员函数,实现字符的输入。
get有三种形式,无参数,一个参数,和三个参数的。
(1)无参数
cin.get()用来从指定的输入流中提取一个字符(包括空白字符),函数的返回值就是读入的字符,若遇到输入流的文件结束符,则函数返回值为EOF(EOF是在iostream头文件中定义的符号常量,代表-1)。
从键盘读取int main()
{
char c;
while (c=cin.get() )
{
cout <<"字符:"<<c<<" ASCII码:" << int(c) << endl;
}
}
输入:abc回车

输出结果:



②从文件读取

int main()
{
ifstream cin("test.txt");
char c;
while (c=cin.get() )
{
cout <<"字符:"<<c<<" ASCII码:" << int(c) << endl;
if (c == -1){ cout << "The End!" << endl; break;}
}
}
在test.txt中写入abc时候运行结果为:



(2) 有一个参数
cin.get(ch)
其作用是从输入流中读取一个字符,赋给字符变量ch,如果读取成功则函数返回真,如失败(遇文件结束符)则函数返回假。
(3) 有三个参数的get(第三个参数可填可不填)
cin.get(字符数组,字符个数n,终止字符)
cin.get(字符数组,字符个数n,终止字符)其作用是从输入流中读取n-1个字符,赋给指定的字符数组,如果在读取n-1个字符之前遇到指定的终止字符,则提前结束读取。如果读取成功,则函数返回非0值;如果失败(遇文件结束符)返回0。
注意这里的读取字符数组只有读取n-1个字符,第n个字符为/0。

二、getline()
getline()函数的作用是从输入流读取一行字符,其用法与带3个参数的get函数类似。
cin.getline(字符数组,字符个数n,终止标志字符)
三、getch()
头文件conio.h
getch()是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车,有的C语言命令行程序会用到此函数做游戏,但是这个函数并非标准函数,要注意移植性!

getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,
getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.

int main()
{
char c;
while (c = getch())
{
cout << int(c) << " ";
}
}
输入:abc

输出:97 98 99

四、getchar()
功 能:
从stdio流中读字符

头文件:stdio.h

用 法: int getchar(void);

getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.

{
char a, b;
a = getchar();
b = getchar();
cout << a << " " << b << endl;
}如果想在上面程序中给ab分别赋值x,y则直接输入xy即可,如输入x-回车-y则结果为:a
= x , b = ’\n’(换行符)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐