operatore typeid in C ++
-
03-10-2019 - |
Domanda
Ho il seguente codice
int main()
{
cout << "Please enter your name..." << endl;
cin >> name;
cout << "Data type = " << typeid(name).name() << endl;
cin.get();
return 0;
}
Secondo i vari libri di testo e pezzi di documentazione che ho letto su l'operatore typeid, devo aspettare di leggere
"Data type = string"
come l'uscita. Invece, ottengo il seguente
class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
Qualcuno ha qualche idea di dove sto andando male? FWIW, sto usando Visual Studio 2010 Professional.
Soluzione
Non c'è niente di sbagliato.
Quei libri di testo, prima di tutto, dovuto dirti il ??risultato di name()
è definito dall'implementazione, e potrebbe benissimo essere ""
. In secondo luogo, questo tipo è std::string
. Il tipo std::string
è solo un typedef di std::basic_string
con char
e gli amici.
Altri suggerimenti
std :: string è un alias per la specializzazione char
del modello di classe std::basic_string
. Quel boccone che si vede di uscita è il typename completo compresi tutti i parametri di modello.