2017-03-02 15 views
0

でunoredered_mapでそのコンテンツを格納します。私は次のようになり、テキストファイル持っているテキストファイルを読み込み、C++

car 1 2 3 
truck 4 5 8 
van 7 8 6 3 

を、私はこのファイルを読み込み、として宣言されているunordere_mapにその値を格納したいです:

unordered_map <string , vector<int>> mymap 

車のタイプをキーとして保存し、残りの数字はそのキーのベクトル内の値として保存します。

何私がこれまで行っていることである。

int main() 
{ 
    ifstream file("myfile");  
    string line; 
    unordered_map <string, vector<int>> mymap; 
    while(std::getline(file, line)) 
    { 
     std::istringstream iss(line); 
     std::string token; 
     while (iss >> token) 
     { 
     // I don't know how to store the first token as key while the rest as values 
     } 
    } 
} 
+0

'')(しばらくの内側に別のループを入れて数字を読み込みます。 –

+0

お返事ありがとうございます。 @一部のプログラマーは、より簡単なソリューションを提供しています。 – emadalamoudi

答えて

2

あなたは間違った場所に内側のループを持っている(と、本当にすべてでそれを必要としません)。

まず、簡単な入力操作で「キー」を取得します。その後、の整数をすべて読み込み、ベクトルに追加します。最後に、その行のすべてのデータが読み込まれた後、キーと値(ベクトル)をマップに追加します。このような

何か:

// Get the key 
std::string token; 
iss >> token; 

// Get the integers 
std::vector<int> values(std::istream_iterator<int>(iss), 
         std::istream_iterator<int>()); 
// Or use a plain loop to read integers and add them to the vector one by one 

// Add the key and vector to the map 
mymap[token] = values; 
+0

ありがとう。私の望むものとして機能します。別のループを追加し、int値をベクトル "values.push_back(token)"の中に1つずつ戻しました。 – emadalamoudi

+0

@emadalamoudi整数を読むために内部ループは必要ありません。私の例で示したように、すべての数値が自動的に読み込まれ、ベクトルに追加されます。 –

関連する問題