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库可以实现对终端窗口的控制和读取键盘输入等功能。
以上是一些常用的方法,但还有其他方法也可以获取键盘输入。需要根据具体的应用场景来选择最合适的方法。

相关内容

热门资讯

一汽豪掷37亿拿下零跑5%股权... 成立十周年之际,零跑宣告了和一汽的股权合作。12月29日,零跑汽车(下称“零跑”)于港交所公告,前一...
2026节点增长大会圆满收官,... 岁尾年初,AI早已跨越“概念验证”的青涩,全面挺进“产业重塑”的深水区。从生命科技的细胞工厂到穿梭城...
挑战年销量400万,零跑意欲撕... 在零跑汽车成立十周年之际,零跑迎来了又一位新的大股东——中国一汽。随着一汽的入股,这家新势力车企将携...
天箭科技可能“披星戴帽”,调减... 微成都报道 12月29日盘后,天箭科技(002977)发布重大风险提示公告。受军品价格调整影响,公司...
合见工软启动上市辅导,估值13... 红星资本局12月29日消息,日前,证监会官网显示,国产EDA头部企业上海合见工业软件集团股份有限公司...