C++ 基础: cin和getline() 有啥区别?
创始人
2025-05-31 00:38:40

所谓温故而知新,所以时不时会回头来看看我们最最基础的知识。
获取标准键盘输入的方法有多种。以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 
#include 
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 int main()
{char c;printf("Enter a character: ");c = getchar();  // 获取键盘输入printf("You entered: %c\n", c);return 0;
}

2、使用scanf()函数:这个函数可以按照指定的格式从标准输入(键盘)读取数据。例如,使用%c格式可以读取一个字符。

#include 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 int main()
{char str[100];printf("Enter a string: ");fgets(str, 100, stdin);  // 获取键盘输入printf("You entered: %s", str);return 0;
}

使用第三方库:例如,使用ncurses库可以实现对终端窗口的控制和读取键盘输入等功能。
以上是一些常用的方法,但还有其他方法也可以获取键盘输入。需要根据具体的应用场景来选择最合适的方法。

相关内容

热门资讯

科技揭秘“好玩贰柒拾真的有挂吗... 您好:好玩贰柒拾这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9951342】很多玩家在这款游...
玩家分享攻略“大庆划水麻将.到... 您好:大庆划水麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款...
资金流出科技股!纳指收跌0.2...   中新经纬11月12日电 美股三大指数表现分化,截至收盘,道指涨1.18%,报47927.96点,...
最新一款“麻友圈2贵阳捉鸡.是... 您好:麻友圈2贵阳捉鸡这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9158489】很多玩家在...
实测推荐“九点麻将到底有挂吗”... 您好:九点麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏...