如何使cin.getline工作?

时间:2011-12-11 10:43:44

标签: c++

void CDepartment::Engg() {         
 system("cls");
 Invent.welcome();
 cout<<"\t     (ADD AN ASSET)\n=========================================================\n\t COLLEGE OF ENGINEERING\n=========================================================\n";

 cout<<"\tWhich department?\n\t-Civil Engineering\n\t-ECE and CPE\n\t-[Ba]ck\n\n\tChoice:";
 cin.getline(choice_1,20);  

 if (strcmp(choice_1,back)==0){
                     Invent.add();}
 Invent.Info();    
}  
全局声明

choice_1。这是行不通的。它会跳过cin.getline(choice_1,20);。我怎样才能让它起作用?

2 个答案:

答案 0 :(得分:0)

您是否尝试在cin.getline()之前使用cin.ignore()?有时它可能有助于它清除(可能不会完全清除,它“从输入序列中提取字符并丢弃它们”)存储在缓冲区中的不需要的字符。

//...
cout<<"\tWhich department?\n\t-Civil Engineering\n\t-ECE and CPE\n\t-[Ba]ck\n\n\tChoice:";
cin.ignore(256, '\n');
cin.getline(choice_1,20);  
//...

答案 1 :(得分:0)

您是否尝试过逐步调试? 看看choice_1变量会发生什么?

修改:尝试在您的行前添加cin.get();,否则可能只是尝试读取空白“\ n”而不是实际输入。