【发布时间】:2017-10-03 01:26:12
【问题描述】:
如果“INSERT_EMPLOYEE”下面的数据足以输入到我的“insertEmployee”函数中,我该如何检查文本文件? (例如:正确的数量、参数类型或检查参数边界)另外,如果输入的格式无效,我不想执行该操作,而是直接跳到下一个操作。
我的文本文件:
INSERT_EMPLOYEE
12345
John
Smith
60000
35
INSERT_EMPLOYEE
Chris
Evans
70000
INSERT_EMPLOYEE
34567
Michael
Carter
50500
25
PRINT_ROSTER
我的 main.cpp:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int id, salary, hours;
employeeList list = employeeList();
string line, firstName, lastName;
ifstream employeeFile;
employeeFile.open("employeeFile.txt");
while(getline(employeeFile, line)) {
if (line == "INSERT_EMPLOYEE") {
employeeFile >> id >> firstName >> lastName >> salary >> hours;
list.insertEmployee(id, firstName, lastName, salary, hours);
}
if (line == "PRINT_ROSTER") {
list.printRoster();
}
employeeFile.close();
return 0;
}
【问题讨论】:
-
您可以通过使用
std::getline()并自己验证输入来做到这一点。>>格式化的输入提取运算符在输入有效时工作得很好。如果不是这样,你手上就会有一大堆难以解开的烂摊子。因此,如果需要输入验证,请不要使用>>。故事结束。 -
@SamVarshavchik 这很有道理,谢谢!
-
语法注释:“输入到我的“insertEmployee”函数中?”。尝试更正式的“通过值传递给 insertEmployee() 函数”,或者通过引用传递,或者可能是“发送到 insertEmployee() 函数”或者选择适当时态的同义词:放入、加载、插入;键入、键入in,输入;代码,存储。“输入”是对您的代码尚未完成的事情的过去时态描述。