2016-10-27 34 views
0

これは「C++でCSVファイルからデータを読み込む方法」と非常によく似ています。 お願いします。 私は今CSVファイルからC++へのMAPへのデータの保存

DataFlow::DataFlowManager(id, ttl) 
{ 
Data_flow_map_[2] = DatFlow(2, Traffic0, 2, 8, 0, 500, 300, 3, 0, false); 

     Data_flow_map_[13] = DataFlow(13, Traffic1, 2, 8, 0, 500, 300, 3, 0, false); 
     Data_flow_map_[14] = DataFlow(14, Traffic2, 1, 8, 0, 500, 300, 3, 0, false); 
} 

以下のようにDataFlowManager //を呼び出す際に

std::map<uint8_t, DataFlow> Data_flow_map_; 

として宣言されたデータフローのマップを持っているクラスに

class DatFlow{ 
public: 
DataFlow(uint8_t Data_flow_id, uint8_t data_type, 
       uint8_t priority, uint8_t window_size, uint16_t send_ttl, 
       uint16_t sequence_ttl, uint16_t guard_ttl, uint8_t retry_count, 
       uint8_t repeat_count, bool ack); 
... 
}; 

をコンストラクタを持っているのではなく、地図をハードコーディングして、私はCSVからデータを読んで地図に載せたいと思います。

The csv file contains could look like 
2, Traffic0, 2, 8, 0, 500, 300, 3, 0, false 
13, Traffic1, 2, 8, 0, 500, 300, 3, 0, false 
14, Traffic1, 1, 8, 0, 500, 300, 3, 0, false 

どうすればよいですか?

+0

キーとなるフィールドはどれですか? 'std :: map'はキーフィールドを必要とします。 –

答えて

1

これを達成するには余りにも多くの方法があります。
基本アルゴリズム:
1.(ハードコードされたコンストラクタを使用するのではなく)構造体にCSVファイルを読み込みます。
2. std::mapに挿入します。

"stackoverflow C++ read file csv"を検索すると、operator>>をオーバーロードしてCSVファイルからデータメンバーを読み取る方法に関する多数の例が明らかになります。

デフォルトのコンストラクタを作成することをおすすめします。

+0

こんにちはトーマス、私はあなたが提案したアプローチを使用して終了しました。構造体にセルデータをコピーすることでした。構造体がいっぱいになると、コンストラクタにデータを渡し、最終的にマップします。 – user1867459

関連する問題