2009-08-03 8 views
3

Il ne semble pas être un constructeur standard, donc je l'ai pris à faire ce qui suitune Initialisation std :: string d'un personnage

void myMethod(char delimiter = ',') 
{ 
    string delimiterString = 'x'; 
    delimiterString[0] = delimiter; 
    // use string version ... 
} 

Y at-il une meilleure façon de le faire?

Répondre

17

std::string a un constructeur qui le fera pour vous:

std::string delimiterString(1, delimiter); 

Le 1 est un size_t et indique le nombre de répétitions de l'argument char.

+1

Il n'est pas nécessaire de changer la signature pour consolider quelque chose - & delimiter est un char * qui est automatiquement convertible en const char *. const_cast est seulement nécessaire pour _remove_ constness. – bdonlan

+1

* facepalm * Vous avez raison. Je suis réveillé trop tard. –

+1

'& & delimiter' ne fonctionnera pas car le 'char *' résultant n'aura pas de caractère nul. – sth

Questions connexes