繁体   English   中英

如何使cin.getline工作?

[英]How can I make the cin.getline work?

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); 我该如何运作?

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

//...
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);  
//...

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM