Perché questo codice ha un errore di runtime?Perché questo codice ha un errore di runtime utilizzando la mappa con stringhe (C++)?
#include <cstdio>
#include <map>
#include <string>
#include <iostream>
using namespace std;
map <int, string> A;
map <int, string>::iterator it;
int main(){
A[5]="yes";
A[7]="no";
it=A.lower_bound(5);
cout<<(*it).second<<endl; // No problem
printf("%s\n",(*it).second); // Run-time error
return 0;
}
Se si utilizza cout, funziona correttamente; tuttavia, se si utilizza printf, viene visualizzato un errore di runtime. Come si corregge? Grazie!
g ++ 4.6.3 si lamenta con un errore "in fase di compilazione": impossibile passare oggetti di tipo non banale-copiabili "struct std :: basic_string" tramite "..." ". Scommetto che anche il tuo compilatore ha almeno un avvertimento rilevante. –
aschepler