所谓温故而知新,所以时不时会回头来看看我们最最基础的知识。
获取标准键盘输入的方法有多种。以C++语言来说,最常用的就是cin 和geline() 。那么它们之间有什么区别呢,我们总结一下。
一、cin和geline的异同点
在 C++ 中,cin 和 getline 都是用于从标准输入读取数据的函数。
它们的主要区别在于读取数据的方式和行为。
cin
cin 通常用于读取基本数据类型,如整数、浮点数和字符等,它会忽略输入缓冲区中的空白字符(如空格、制表符和换行符)并将其留在缓冲区中。例如:
c++
int num;
cin >> num;
如果用户输入了一个数字后按下回车键,cin 将读取该数字,并且回车字符仍然留在输入缓冲区中。
getline
相反,getline 用于读取一行文本,包括空格和其他特殊字符,直到遇到换行符或文件结尾。例如:
c++
string line;
getline(cin, line);
getline 会将输入缓冲区中的所有内容都读取完毕,包括换行符。因此,如果你想在使用 getline 之前调用 cin 来读取某个数据,你需要在这两个函数之间清空输入缓冲区(例如通过调用 cin.ignore()
函数),以免影响 getline 的结果。
一个完整的例子
#include <iostream>
#include <string>
using namespace std;
int main()
{
std::cout << "Hello World!\n";
int a;
cin >> a;
cout << a << endl;
cin.ignore();
string s;
getline(cin, s);
cout << s << endl;
}
二、顺便盘点下在C语言中我们常用的获取键盘输入的方法
在C和C++中,获取键盘输入的几种常用方法包括:
1、使用getchar()函数:这个函数从标准输入(键盘)读取一个字符,并返回其ASCII码值。
#include <stdio.h>
int main()
{
char c;
printf("Enter a character: ");
c = getchar(); // 获取键盘输入
printf("You entered: %c\n", c);
return 0;
}
2、使用scanf()函数:这个函数可以按照指定的格式从标准输入(键盘)读取数据。例如,使用%c格式可以读取一个字符。
#include <stdio.h>
int main()
{
char c;
printf("Enter a character: ");
scanf("%c", &c); // 获取键盘输入
printf("You entered: %c\n", c);
return 0;
}
3、使用gets()或fgets()函数:这些函数可以从标准输入(键盘)读取一行字符。gets()函数已经被淘汰了,建议使用更安全的fgets()函数。
#include <stdio.h>
int main()
{
char str[100];
printf("Enter a string: ");
fgets(str, 100, stdin); // 获取键盘输入
printf("You entered: %s", str);
return 0;
}
使用第三方库:例如,使用ncurses库可以实现对终端窗口的控制和读取键盘输入等功能。
以上是一些常用的方法,但还有其他方法也可以获取键盘输入。需要根据具体的应用场景来选择最合适的方法。