4

マップを使用してデータをファイルに保存しようとしていますが、方法がわかりません。生徒の名前と年齢をファイルに保存したいのですが、生徒の名前を検索すると、年齢が表示されます。

#include <iostream>
#include <map>
#include <fstream>
#include <string>

using namespace std;

class student {
private:
    map<int, string> map;
public:
    void students(string name, int age);
};

void students(string name, int age) {
    if (age < 1) {
        cout << "You must enter a positive number." << endl;
        return;
    }
}

void main() {
    ofstream filemap;
    filemap.open("map.txt");
    int age;
    string name;
    cout << "Please enter the name : " << endl;
    cin >> name;
    cout << "Please enter the age : " << endl;
    cin >> age;

// code to save map to file 

    filemap.close();
}
4

2 に答える 2

2

データをファイルに格納する方法をバイト レベルで正確に決定することから始めます。たとえば、次のようになります。

  1. 各生徒は、ファイル内で正確に 1 行を占めます。

  2. 行は単一の改行文字で区切られます。

  3. 各行は、引用符、生徒の名前、引用符、コンマ、および生徒の年齢で構成されています。

次に、その形式で出力するコードを記述し、その形式から読み取る必要があります。名前に引用符が含まれていると、これが壊れることに注意してください。

于 2012-12-10T14:29:35.400 に答える
-1

コードを改善する必要があります。クラス内のマップに書き込む方法がなくなったため、getter と setter を学生クラスに追加します。たとえば、学生情報をプライベート マップ メンバーにプッシュできるメソッドを追加します。

次に、ブーストのシリアル化について学ぶことをお勧めします: http://www.boost.org/doc/libs/1_52_0/libs/serialization/doc/index.html

もっと簡単な方法が必要な場合は、std::fstream ライブラリについて学んでください。

于 2012-12-10T14:34:25.693 に答える