cin.get(), cin.getline() , getline(cin,s) 三者的区别

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cin.get(), cin.getline() , getline(cin,s) 三者的区别相关的知识,希望对你有一定的参考价值。

cin.get, cin.getline, getline 三者的区别

cin.getline()

用法:接收一行字符串,可以接收空格并输出,可以控制接受的字符范围

#include <iostream>
using namespace std;
main ()

	char m[20];
	cin.getline(m,5);
	cout<<m<<endl;

输入:jkljkljkl
输出:jklj

接收5个字符到m中,其中最后一个为’\\0’,所以只看到4个字符输出;

如果把5改成20:

输入:jkljkljkl
输出:jkljkljkl
输入:jklf fjlsjf fjsdklf
输出:jklf fjlsjf fjsdklf

cin.getline(s,100);:每次读取一整行并把Enter键生成的换行符抛弃,s必须为字符数组类型,即 char s[100];

延伸:

  1. cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符)
  2. 当第三个参数省略时,系统默认为’\\0’
  3. 如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

getline()

getline():是C语言的,获取一行字符串

用法:接收一行字符串,可以接收空格并输出,需包含#include<string>

#include<iostream>
#include<string>
using namespace std;
main ()

	string str;
	getline(cin,str);
	cout<<str<<endl;

输入:jkljkljkl
输出:jkljkljkl

输入:jkl jfksldfj jklsjfl
输出:jkl jfksldfj jklsjfl

getline(cin,s):接受一个字符串,可以接受空格并输出。

  • s必须为字符串类型,即 string s;
  • 输出时需要按两次回车键才能显示,第一次按回车表示字符串结束,第二次按回车才开始输出。

gets()

gets(s):接受一个字符串,可以接受空格并输出。

  • 必须包含头文件#include<cstring>;

  • s必须为字符数组类型,即 char s[100];

总结

  1. cin.get(),cin.getline():是C++的函数
  2. cin.get():获取一个字符
  3. cin.getline():获取一行字符串
  4. getline(cin,s):是C的,获取一行字符串

注意的问题:

  1. cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
  2. 当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过:str="\\n"; getline(cin,str);的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

参考Link Link Link


加油!

感谢!

努力!

以上是关于cin.get(), cin.getline() , getline(cin,s) 三者的区别的主要内容,如果未能解决你的问题,请参考以下文章

使用 cin.getline() 和 cin.get()

cin.get() 和 cin.getline() 之间的区别

转 cincin.get()cin.getline()getline()gets()等函数的用法

c++中 cincin.get()cin.getline()cin.getchar()的区别

C++基础:各种输入方法总结,cincin.get()cin.getline()getline()gets()getchar()

cin.get ()的用法: