getline函数

getline 在接收时遇到回车会停止接收 不会把回车写入数据,但是会把输入缓冲区的回车清除掉;

#include <iostream>
 #include<string>
 using namespace std;
 int main()
 {
     string s;
     char  c;
     cin>>s;
     cin.get(c);
     cout<<'a'<<s<<'g'<<endl;
     cout<<c;
     return 0;
 }
 

输入sadf回车,发现直接输出asadfg,  不会接收c,因为c接收了上面的回车;

但是

#include <iostream>
 #include<string>
 using namespace std;
 int main()
 {
     string s;
     char  c;
     getline(cin,s);
     cin.get(c);
     cout<<'a'<<s<<'g'<<endl;
     cout<<c;
     return 0;
 }
 
输入sad回车发现要求输入c,c没有接收回车,但是发现输出asadg,无换行说明s没有接收回车,~所以回车被清除了;

另外》会跳过空白符(回车,换行,制表)

你可能感兴趣的:(c,String,iostream)