3

これを含むデータテキストファイルがあります

Map2D, [3, 2]
Dot3D, [25, -69, -33], [-2, -41, 58]
Map3D, [6, 9, -50]
Map2D, [3, 2]
Dot3D, [7, -12, 3], [9, 13, 68]
Map3D, [6, 9, 5]
Map2D, [3, 2]
Dot3D, [70, -120, -3], [-29, 1, 268]
Dot3D, [7, 12, 3], [-9, 13, 68]
Map3D, [1, 3, 8]
Dot2D, [5, 7], [3, 8]

基本的にテキストファイルの最初のデータは私が4つのクラスを取得したクラス名です

Map2D
Map3D
Dot2D
Dot3D

プログラムが上記のデータを抽出し、4つのクラスのそれぞれに対して抽出演算子>>をオーバーロードして、関連するオブジェクトに格納できるように、独自のファイルマニピュレーターを作成しようとしました。

ベクトル、マップ、セット、またはリストを使用して保存することを考えていました。しかし、このために、クラスの関連オブジェクトに格納するなど、やりたいことをどのように達成しますか。

自分のファイルマニピュレーターを作成する方法をグーグルで調べてみましたが、誰かがサンプルコードを見せてくれて、それをコンパイルしてテストファイルで実行し、出力を自分で観察できれば良いでしょう。>>演算子でオーバーロードを行うためにiomanipを使用したい

ご迷惑をおかけしましたことをお詫び申し上げます。また、配列を使用して次のデータの保存を実現することはできません。

次のようなものを作成する必要があるため、マニピュレーターを使用する必要があります

私は次のようなことをする必要があります

cout << "Input File Name";
cin >> readFile;

すべてのデータの読み取りとオブジェクトの作成を実行します

次に、レコードを1行ずつ読み取り、クラスとその中のデータを作成します。

ご協力ありがとうございます!

4

2 に答える 2

1

これは、abstract factory パターンの非常に典型的な例です。

これを行うために iomanip を使用することはありません。最初の単語を読み取り、適切なハンドラーを見つけて呼び出し、行の残りを読み取り (解析)、適切なオブジェクトを作成します。

オブジェクト自体は共変である必要はありません。それらを作成するために使用されるファクトリは共変である必要があります。

もちろん、それらすべてをコレクションに保存したい場合は、それをどのように管理したいかを考え出す必要があります。

そして、知らない「見出し」を読んだら、もちろんストリームに失敗します。

于 2012-11-12T16:30:10.840 に答える
-1

使用できる反復子の最も明白な形式はポインターです。ポインターは配列内の要素を指すことができ、インクリメント演算子 (++) を使用してそれらを反復処理できます。しかし、他の形式の反復子が存在します。たとえば、各コンテナー タイプ (ベクターなど) には、その要素を効率的に反復処理するように設計された特定の反復子タイプがあります。

于 2012-11-12T16:26:50.020 に答える