读取文本文件并将其内容存储在c ++中的unoredered_map中

时间:2017-03-02 09:54:28

标签: c++ unordered-map

我有一个看起来像的文本文件:

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
        }
    }  
}

1 个答案:

答案 0 :(得分: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;