写和读长串

时间:2012-12-23 05:00:37

标签: c++ database string file-io

我正在编写一个与数据库类似的程序。它需要一个工号,名字,姓氏,工作描述和工作时间。

对于描述我只知道如何从文件中读取单个字符串。 这是我的代码。

// 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可能正在进行“诊断和修复”,但要将其输入到文件中,我实际上只能使用“修复”,但这可能意味着什么。

1 个答案:

答案 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非常简单,这不会给您带来任何麻烦,即使有,也知道该去哪里!

祝你好运