我正在编写一个与数据库类似的程序。它需要一个工号,名字,姓氏,工作描述和工作时间。
对于描述我只知道如何从文件中读取单个字符串。 这是我的代码。
// basic file operations
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int jobNumber;
string fName;
string lName;
string jobTask;
int jobDuration;
int Rate = 40;
int Price = jobDuration * Rate;
int totalJobs = 0;
ifstream ClientDataBase("example.txt");
while (ClientDataBase >> jobNumber >> fName >> lName >> jobTask >> jobDuration)
{
cout << jobNumber << ' ' << fName << ' ' << lName << ' ' << jobTask << ' ' << jobDuration << "hours" << endl;
totalJobs++;
}
cout << "\nThere are a total of " << totalJobs << " recorded in this database" << endl;
ofstream ClientDatabase("example.txt", ios::app);
cout << "Enter new clients job number, first name, last name, job task, duration of task" << endl;
cout << "press Ctrl+Z to quit\n\n" << endl;
while (cin >> jobNumber >> fName >> lName >> jobTask >> jobDuration)
{
ClientDatabase << jobNumber << ' ' << fName << ' ' << lName << ' ' << jobTask << ' ' << jobDuration << endl;
}
}
使用此布局我插入数据,关闭文件,重新打开并查看数据已存储,我可以再次添加更多数据。但jobTask
只能是一个字。无论如何,我可以做到这一点,所以描述可以比一个单词更长,仍然能够以自定义格式从文件中读出它?例如,jobTask
可能正在进行“诊断和修复”,但要将其输入到文件中,我实际上只能使用“修复”,但这可能意味着什么。
答案 0 :(得分:0)
文件的组织方式会给您带来麻烦,使用某些特定字符分隔数据会很有帮助。
你可以这样做:
employee1=job_number:first_name:last_name:job_description:job_duration
employee2=job_number:first_name:last_name:job_description:job_duration
employee3=job_number:first_name:last_name:job_description:job_duration
// etc..
在您的程序中,您将读取一行,将其保存在缓冲区中,处理缓冲区(解析它,检索数据,检查语法等等),擦除它然后读取新行,等等...
由于你的单词没有用空格分隔,你的问题显然已经消失了,以及你以后可能会遇到的许多其他问题。
使用iostream非常简单,这不会给您带来任何麻烦,即使有,也知道该去哪里!
祝你好运