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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top