今天编程序时遇到了如下问题:
int main() { cout<<"1 Write a record"<<endl; cout<<"2 Read a record"<<endl; cout<<"3 Exit"<<endl; int a; char filename[MAX_PATH+1]; //cout<<"input filename :"; //cin.getline(filename,MAX_PATH); while(true) { cin>>a; switch(a) { case 1: cout<<"input filename :"; cin.getline(filename,MAX_PATH); writefile(filename); break; case 2: cout<<"input filename :"; cin.getline(filename,MAX_PATH); readfile(filename); break; case 3: return 0; } } return 0; }
当输入a之后便直接调用函数,似乎跳过了cin.getline语句,百思不得其解,后来在cin.getline语句前加了getchar(),便解决了该问题,其实在输入a值时按了回车键,cin.getline似乎读入了回车,于是回车被当作参数传递给了函数,将getchar()加到其前便可解决问题。