Pozor, kód fungovat pro jednopísmenné názvy nutně nemusí, autor alokuje char do něhož načte jeden znak ve vstupu, ale konstruktoru ifstreamu ten char* předává ve významu stringu! Takže pokud za oním charem nebude v paměti následovat '\0', přečte si konstruktor nějaké nesmysly za tím.
Jinak pro autora je chyba opravdu v tom jednom znaku, pro uložení názvu v C++ doporučuji std::string.