2016-05-19 8 views
-1

Ich muss eine multimap<int,string> aus einer Datei lesen, und ich kann nicht herausfinden, wie es geht.Lesen einer Multimap <int, string> aus einer Datei

ifstream in ("words.txt"); 
multimap<int, string> words; 
int count = 0; 
while (!in.eof()) { 
     getline(in, words[count]); 
     count++; 
} 

Wenn ich es laufen bekomme ich diesen Fehler error: no match for ‘operator[]’ (operand types are ‘std::multimap<int, std::__cxx11::basic_string<char> >’ and ‘int’) getline(in, words[count]); ich mit in >> words[count] versucht, und es nicht arbeiten. Wie soll ich das beheben?

+0

Nicht direkt mit Ihrem Fehler verbunden, aber bevor es Sie beißt: [Verwenden Sie nicht 'eof()' als eine Schleifenbedingung] (http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside -a-loop-Bedingung-als falsch angesehen. – Quentin

+0

a) nicht während while (! In.eof), google es youll finden eine Antwort auf stackoverflow b) multimap [scheint nicht diesen Operator] (http://en.cppreference.com/w/cpp/container/multimap) – Borgleader

Antwort

1

Die multimap hat keine operator[].

Sie können die insert-Methode von multimap oder emplace verwenden, wenn Sie C++ 11 verwenden.

Siehe here für Dokumentation und Beispiel.

0

Verwendung .Insert() -Methode:

cplusplus reference

Auch wenn Sie jedes Paar in den nachfolgenden indizieren möchten Sie vielleicht std :: vector und push_back()

0

Es gibt keine [] verwenden Operator für std::multimap. Sie müssen eine Zeile als Zeichenfolge lesen und dann insert verwenden.