2015-09-12 31 views
1
#include <iostream> 
using namespace std; 


int main(int argc, char** argv) { 

char text[200]; 
int input; 


cin>>input; 
if (input == 1) 
{ 
    cin.getline(text, 200); 
    cout<<text<<"\n"; 

} 
else if(input == 0) 
{ 
    cout <<"You entered a 0"; 
} 

return 0; 
} 

我想做一个小程序,用户给出的输入是1或0.如果用户输入1,那么他可以输入一个完整的句子并将其存储在字符数组中。我的问题是,当我把cin.getline()放在if语句中时,它不再起作用。这是为什么?为什么cin.getline()不起作用(C++)?

感谢

+1

在调用'getline()'之前,必须从第一个输入操作中读取剩余的换行符。 –

+0

在阅读新文章之前,您必须刷新输入 – NemanjaT

回答

1

这并不是说cin.getline()不起作用。它完全按照它的要求:阅读下一行的文本行。恰巧cin >> input;已经读取了一些数字,然后在输入缓冲区中留下了第一个非数字输入 - 通常是换行符,除非您输入的不是数字。

你可以通过调用cin.ignore()来解决这个问题,它将“读取所有内容到下一个新行并将其扔掉”。

理想情况下,你应该决定是否要使用cin >>cin.getline(),并使用一个或另一个,但这就意味着然后读取你的代码转换为数字文本和字符串,如果你是一个新手,这可能比你想要做的更复杂一点。

+0

非常感谢您的操作! – Bex