2017-07-23 3 views
1

Ich habe versucht, eine Zeichenfolge im MAP mit Iterator zu drucken, aber ich erhalte einen Fehler.Kann Iterator nicht für MAP zum Drucken von STRING verwenden. (in der Lage, int zu drucken)

Programm -

#include<iostream> 
#include<stdio.h> 
#include<conio.h> 
#include<map> 
#include<string.h> 
#include<unordered_map> 
using namespace std; 
void main() 
{ 
std::map<int,std::string>mymap; 
std::map<int,std::string>::iterator it; 

mymap.insert(make_pair(10, "sid")); 
mymap.insert(make_pair(20, "sam")); 

for (it = mymap.begin(); it != mymap.end(); it++) 
{ 
    //printf("%s \n", it->second); 
    std::cout <<*it->second << std::endl; 
} 
system("pause"); 
_getch; 

} 

Fehlerliste

1.Error C2679 binary '<<': no operator found which takes a right-hand 
the operand of type 'std:: string' (or there is no acceptable conversion) 
2.Error (active) no operator "<<" matches these operands  

konnte ich den int richtig drucken. Ich kann den STRING nicht drucken. Bitte schlagen Sie eine Lösung vor.

+0

Wenn Sie 'namespace std' bereits verwenden, verstehe ich nicht, warum Sie' std :: 'überall redundant verwenden? –

Antwort

0

So greifen Sie nicht auf das Objekt zu, auf das der Iterator zeigt.

Verwenden Sie einfach cout<< it->second<<endl;.

Alle Fehler werden automatisch behoben.

P.S. Verweise auf meinen Kommentar zu deiner Frage.

Verwandte Themen