0

私はデータベースと同じように動作するプログラムを書いています。これには、ジョブ番号、名、姓、ジョブの説明、およびジョブの期間が必要です。

説明のために、私はファイルから単一の単語の文字列を読み取る方法しか知りません。これが私のコードです。

// 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できるのは1つの単語だけです。とにかく、説明を単語より長くして、カスタム形式でファイルから読み取ることができるようにすることができますか?たとえばjobTask、「診断と修復」を実行している可能性がありますが、それをファイルに入力するには、実際には「修正」しか使用できませんが、それは何を意味する可能性もあります。

4

1 に答える 1

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の操作は非常に簡単で、問題が発生することはありません。問題が発生した場合でも、どこに行けばよいかわかります。

幸運を

于 2012-12-23T05:20:56.603 に答える