C++ C++;忽略并清除缓冲区 int位置; 打开文件(“EmployeeInfo.dat”,ios::in | ios::binary); 字符名[80]; 不能选择; 开关(选择) { 案例1:cout
问题在于C++ C++;忽略并清除缓冲区 int位置; 打开文件(“EmployeeInfo.dat”,ios::in | ios::binary); 字符名[80]; 不能选择; 开关(选择) { 案例1:cout,c++,iostream,C++,Iostream,问题在于cin.ignore()call,它将一直读取,直到它读取了100个字符或其中一个字符是换行符。因此,为了满足它,您必须输入一个换行符。hmm我理解您的意思,但是当我键入cin.getline时,这不就是满足\n函数的吗?例如,我的输入是cin.getline(name,80)@user3245403当您执行ignore后接getline时,您正在执行两个输入操作。这两个操作都以换行结束。哦,好吧,我明白了,但是,当我删除ignore函数时,出现了新员工用户名:记录未找到。cin.get
cin.ignore()
call,它将一直读取,直到它读取了100个字符或其中一个字符是换行符。因此,为了满足它,您必须输入一个换行符。hmm我理解您的意思,但是当我键入cin.getline时,这不就是满足\n函数的吗?例如,我的输入是cin.getline(name,80)@user3245403当您执行ignore
后接getline
时,您正在执行两个输入操作。这两个操作都以换行结束。哦,好吧,我明白了,但是,当我删除ignore函数时,出现了新员工用户名:记录未找到。cin.getline被跳过。我该怎么做?我想你需要显示一点more周围的代码,以及显示实际的输入/输出和预期的输入/输出(即,使用当前代码显示会话,以及它应该是什么样子)。请将您的程序复制粘贴到一个代码块中,好吗?这有助于我们查看另一个代码块之前/之后发生的情况。
int position;
afile.open("EmployeeInfo.dat", ios::in | ios::binary);
char name[80];
cout << "\nEdit Employee Info" << endl;
cout << "---------------------" << endl;
cout << "New Employee Username: ";
cin.clear();
cin.ignore(100, '\n');
cin.getline(name, 80);
bool flag = true;
afile.open("EmployeeInfo.dat", ios::in | ios::binary);
char name[80];
cout << "\nAdd Employee Info" << endl;
cout << "---------------------" << endl;
cout << "New Employee Username: ";
cin.clear();
cin.ignore(100, '\n');
cin.getline(name, 80);
cout << "Your Choice: ";
cin >> choice;
switch(choice)
{
case 1: cout << "Create Holiday Package" << endl;
break;
case 2: cout << "Delete Holiday Package" << endl;
break;
case 3: cout << "Edit Holiday Package" << endl;
break;
case 4: addEmployee(afile, num, e);
break;
case 5: delEmployee(afile, num, e);
break;
case 6: editEmployee(afile, num, e);
break; ....// to be continue case
}//end case