getline和std :: istream :: operator >>()之间有什么区别?

use*_*442 5 c++ cin istream

#include <iostream>
#include <string>

using namespace std;

int main()
{
   string username;
   cout<< "username" ;
   cin >> username; 
}
Run Code Online (Sandbox Code Playgroud)

所以我很好奇这两个代码之间有什么区别,我听说它是​​一样的但是如果是那么为什么有两种方法可以做到呢?

#include <iostream>
#include <string>
using namespace std;

int main()
{  
   string username;
   cout << "username" ;
   getline (cin,username) ;
}
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 10

不同之处在于std::getline- 顾名思义 - 从给定的输入流中读取一行(可能就是这样std::cin)并operator>>读取一个单词1.

也就是说,std::getline读取直到找到换行符并operator>>读取直到空格(由定义std::isspace)并找到.两者都从流中删除它们各自的分隔符,但不将它放在输出缓冲区中.

1.请注意,>>还可以阅读的数字- ,int,short,float,char等.


Emi*_*lia 6

读取空间>>运算符分隔字符串.std::istream

getline 读取给定的分隔符(默认为'\n').

因此getline承认包含空格的字符串,>>运算符不允许