getline和cin.getline的区别
2017-02-04 16:12
721 查看
getline和cin.getline这两个函数很相似,先说getline吧,
1:getline有两个重载版本,第一个版本接受两个参数:
一个istream对象的引用(可以是istream&等);
第二个参数string对象的引用
顺便说一下,cin遇到空格,tab键就会结束输入(并且会忽略),按下回车后输入的字符才会发送到缓冲区:
如图
输入one two TWO
由于one后面是空格,所以输入结束了,str就是”one”,然后由于缓冲区里还有“ two TWO”,cin会忽略空格,所以第一个空格不会赋值给s,同样的,s为two;
好了,现在来说第一个版本的getline:
如图:和上一次输入一样
不同的是,s的值不一样,这是因为此版本的getline接受一个istream对象的引用,和一个string对象的引用,而空格,ta键会像普通字符一样赋值给s,遇到换行符结束,并且会丢弃换行符
第二个版本的getline新增加了一个参数,是字符类型的,表示终止符,遇到该终止符结束输入,并且不会丢弃换行符
如图:
输入”one[空格]two[回车]
[回车]
three[空格]four[空格]five[回车]
six[回车]
~[回车]”
s为“one two”,由于丢弃了一个换行符,所以str为”\nthree four five\nsix\n”;而且此版本不会丢弃换行符,换行符还留在缓冲区中,可以验证一下:
如图
这就是getline的用法了,此getline函数位于命名空间std中
2:cin.getline
第一个版本是接受两个参数,一个是字符数组首地址,第二个是表示个数
如图:
这个版本的cin.getline和对应版本的getline很相似,区别是一个接受字符数组首地址和个数,另一个是istream类型string类型;
此版本遇到换行符或输入字符个数大于第二个参数就结束输入,也会丢弃换行符
如图:
1:getline有两个重载版本,第一个版本接受两个参数:
一个istream对象的引用(可以是istream&等);
第二个参数string对象的引用
顺便说一下,cin遇到空格,tab键就会结束输入(并且会忽略),按下回车后输入的字符才会发送到缓冲区:
# include<iostream> # include<string> using namespace std; int main() { string str,s; cin >> str; cin >> s; system("pause"); return 0; }
如图
输入one two TWO
由于one后面是空格,所以输入结束了,str就是”one”,然后由于缓冲区里还有“ two TWO”,cin会忽略空格,所以第一个空格不会赋值给s,同样的,s为two;
好了,现在来说第一个版本的getline:
# include<iostream> # include<string> using namespace std; int main() { string str,s; cin >> str; getline(cin, s); system("pause"); return 0; }
如图:和上一次输入一样
不同的是,s的值不一样,这是因为此版本的getline接受一个istream对象的引用,和一个string对象的引用,而空格,ta键会像普通字符一样赋值给s,遇到换行符结束,并且会丢弃换行符
第二个版本的getline新增加了一个参数,是字符类型的,表示终止符,遇到该终止符结束输入,并且不会丢弃换行符
# include<iostream> # include<string> using namespace std; int main() { string str,s; getline(cin, s); getline(cin, str, '~'); system("pause"); return 0; }
如图:
输入”one[空格]two[回车]
[回车]
three[空格]four[空格]five[回车]
six[回车]
~[回车]”
s为“one two”,由于丢弃了一个换行符,所以str为”\nthree four five\nsix\n”;而且此版本不会丢弃换行符,换行符还留在缓冲区中,可以验证一下:
# include<iostream> # include<string> using namespace std; int main() { string str,s; getline(cin, str, '~'); getline(cin, s, '~'); system("pause"); return 0; }
如图
这就是getline的用法了,此getline函数位于命名空间std中
2:cin.getline
第一个版本是接受两个参数,一个是字符数组首地址,第二个是表示个数
如图:
这个版本的cin.getline和对应版本的getline很相似,区别是一个接受字符数组首地址和个数,另一个是istream类型string类型;
此版本遇到换行符或输入字符个数大于第二个参数就结束输入,也会丢弃换行符
如图:
相关文章推荐
- C/C++学习笔记1 - 深入了解scanf()/getchar(cin、cin.get()、cin.getline()、getline()、gets()、getchar()的区别 (OJ时候会用到)
- getline(),cin.getline(),cin.get()区别
- getline和cin.getline的区别!
- C++ 读书笔记之 getline与cin.getline的区别
- C++中cin.getline()、getline()、cin.get()区别
- C++中几个输入函数的用法和区别(cin、cin.get()、cin.getline()、getline()、gets()、getchar()))
- getline和cin.getline的区别
- cin.getline、getline和gets的区别
- cin cin.get() cin.getline() string类成员函数getline(cin,str)使用方法区别与联系
- cin.get(), cin.getline(), getline()简单区别
- cin.getline()、getline()、gets()、cin.get(),getchar()的区别
- C++ 输入函数getline(cin,str) 与cin.getline(str,int)区别
- cin.getline,getline,gets 的区别个
- C++ 输入函数getline(cin,str) 与cin.getline(str,int)区别
- cin.get(),cin.getline(),getline()区别
- C++ 输入函数getline(cin,str) 与cin.getline(str,int)区别
- cin.getline()和getline()的区别联系
- getline()和cin.getline()的区别
- cin、cin.get()、cin.getline()、getline()、gets()
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法