我有一个看起来像的文本文件:
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 :(得分: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;