Un tel cast suppose que ms est
auxquels cas on peut faire directement :
- soit d'un type dérivant de std::string
- soit d'un type définissant une conversion implicite vers std::string&, c'est à dire : operator std::string& ()
Insérer des casts au hasard n'est jamais une solution!
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::string str = ms;
Je vois que tu as corrigé un oubli : as ajouté un \.
Il reste qu'en C++ le simple quote indique un littéral caractère (ou littéral multi-caractères) et le double quote une chaine littérale.
Enfin, écrire explicitement le nombre 17 n'est pas génial : il suppose qu'on sache compter, hors il arrive que les programmeurs se trompent en comptant (ça arrive même très souvent : "buffer overflow"). On préfère donc laisser le compilateur compter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 static const char init_string[ /*au compilateur de compter*/ ] = "ma\0multi\0string\0"; std::string multi_string (init_string, 0, sizeof init_string); // initialisation directe, pas de copie
Partager