c++中 getline(), cin.get(), cin.getline() 总结

本文详细介绍了C++中cin.get()与cin.getline()的功能及使用方法,包括它们如何处理分界符、如何读取字符串等内容。同时对比了getline()函数与cin.getline()的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cin.get() 与 cin.getline()  很相似,参数只能接受char数组。

只是cin.get() 把分界符保留在输入流中,而cin.getline()丢弃分界符。

下面代码示例详细说明:

#include <iostream>
#include <string>

int main()
{
	using namespace std;
	string s;
	char ch[20];
	cout << "Please enter a string : \n";
//	cin.getline(s,2);  //error
//	getline(s,cin);   //error
	cout << "s: " << s << endl;
	
	cout << "cin.get(ch,20):\n"; 
	cin.get(ch,20);   //读取一行,或直到读满19个字符。 换行符'\n'保留在输入流中 
	cout << "ch: " << ch << endl;
	
	cout << "cin.get(ch,20,'#'):\n"; 
	cin.sync();   //因为'\n'被保留在输入流中,这里清空流。 
	cin.get(ch,20,'#');   //直到读满19个字符(可多行,或者读取到'#','#'被放在输入流中)。 
	cout << "ch: " << ch << endl;
	//cin.get()可以用来接收字符,不会略过空白字符,包括空格、回车、Tab等。返回类型为整型。
	cout << "Next chracter: " << (char)cin.get() <<endl; 
	
	cout << "cin.getline(ch,20):\n"; 
	cin.sync();
	cin.getline(ch,20);   //读取一行,或直到读满19个字符。丢弃换行符'\n'. 
	cout << "ch: " << ch << endl;
	
	cout << "cin.getline(ch,20,'#'):\n"; 
//	cin.sync();
	cin.getline(ch,20,'#');   //直到读满19个字符(可多行,或者读取到'#','#'被丢弃)。 
	cout << "ch: " << ch << endl;
	//cin.get(ch[0])可以用来接收字符,不会略过空白字符,包括空格、回车、Tab等。返回类型为地址。
	cin.get(ch[0]);
	cout << "Next chracter: " << ch[0] <<endl; 
 
	return 0;
}


getline() 与cin.getline() 功能相同,并且都会丢弃分界符。不同点在于:
getline() 是在string头文件中,定义的是一个全局的函数,函数声明是istream& getline ( istream& is, string& str, char delim )与
istream& getline ( istream& is, string& str );接受参数为string类型。
cin.getline()是istream的成员函数,函数声明是istream& getline (char* s, streamsize n )与istream& getline (char* s, streamsize n, char delim );接受参数为char数组。
下面是getline()函数的代码示例:
#include <iostream>
#include <string>

int main()
{
	using namespace std;
	string s;
	char ch[20];
//	getline(cin,ch);  //error
	cout << "ch :" << ch << endl;
	cout << "Input string (getline(cin,s)) :\n";
	getline(cin,s);
	cout << "s :" << s << endl;

	cout << "Input string (getline(cin,s,'#')) :\n";
	getline(cin,s,'#');  //丢弃分界符'#' 
	cout << "s :" << s << endl;
	cout << "Next chracter: " << (char)cin.get() <<endl; 

	return 0;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值