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);
。我怎样才能让它起作用?
答案 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”而不是实际输入。