getline和direction的混淆将cin分配给string

时间:2017-08-27 04:14:03

标签: string c++11

 string input_a;
 string input_b;

 cout << "Input a :" ;
 getline(cin,input_a);

 cout << "Input b :" ;
 cin >> input_b;

 cout << "Input a :" << input_a <<endl
      << "Input b :" << input_b;
 return 0;

getline(cin,input_a)cin >> input_b如何在内部工作以接受输入值?有什么区别以及什么时候正确申请? 困惑,特别是在比较给定的字符串时。

2 个答案:

答案 0 :(得分:0)

&#34; getline&#34;之间的应用差异和&#34; cin&gt;&gt;&#34;那是&#34; getline&#34;将整个字符串与空格一起使用,而&#34; cin&gt;&gt;&#34;命令只接受一个没有多余空格的字符串。

例如:如果我们想要扫描&#34; Hello World &#34;来自用户使用&#34; cin&gt;&gt;&#34;命令,我们不能得到整个字符串。只有&#34; 您好&#34;将被存储。然而,&#34; getline&#34;将帮助我们存储整行字符串&#34; Hello World &#34;。

答案 1 :(得分:0)

istream& getline (istream& is, string& str, char delim);    
istream& getline (istream& is, string& str);

将字符从is中提取到str,直到分隔字符,或者默认为“\ n”。

对于案件cin, 实际上没有“&gt;&gt;”在全局命名空间中运算符,它正在调用函数

istream& operator>> (istream& is, string& str)

Argument-dependent lookupstdKoenig lookup命名空间中的

这实际上使用空格作为分隔符,因此它提取一个单词而不是整个句子。这与getline的不同之处在于获得整条生产线。