bonjour,
je voudrais ajouter "= TRUE" a la fin de mon std::string et le mettre dans un CString
merciCode:
1
2
3 const std::string var + "TRUE"; //convertion en CString const CString cmd = ...
Version imprimable
bonjour,
je voudrais ajouter "= TRUE" a la fin de mon std::string et le mettre dans un CString
merciCode:
1
2
3 const std::string var + "TRUE"; //convertion en CString const CString cmd = ...
ceci n'est pas correct mais je sais pas comment faire?Code:
1
2
3
4
5 const std::string cmd; cmd = nom_rep_TC + " = TRUE"; std::string s(cmd); CString str(s.c_str());
pour la convertion je recupere cmd en CString dans quel variable.?Code:cmd = nom_rep_TC + " = TRUE";
merci
donc dans "str" j'ai un std::string
ceci ne fonctionne pas
mess erreurCode:cmd = var + " = TRUE";
merciCitation:
binary '=' : no operator defined which takes a left-hand operand of type 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is
no acceptable conversion)
Non !!! str est initialisé par un const char* (la méthode c_str() de string retourne un const char*)
var est de quel type? :roll:
Edit:
cmd ne doit pas être const puisque tu modifies sa valeur ... d'où l'erreur
ou bien, l'initialiser au moment de la déclaration
Code:const std::string cmd = var + " = TRUE";
Et si je veut ajouter un entier dernier cette chaine?
j'ai essayer ceci mais ca ne fonctionne pas
est ce qu'il faut que je convertisse mon entier en std::string?Code:
1
2 int num; cmd = nom_rep_TC + " = " + num;
si oui comment fait ton car je comprend pas trop dans le FAQ
merci
Salut,
Le problème vient du fait que tu déclares cmd comme étant... une chaine constante ( const std::string cmd ;))
Il est donc logique que tu ne puisse pas modifier cette chaine particulière, étant donné que tu as explicitement indiqué au compilateur que... tu ne voulais pas en permettre la modification ;)
Tu est donc obligé de passer par une chaine différente, qu'il ne faut surtout pas déclarer constante si tu veux y apporter des modifications ;)
Cela peut se faire sous une forme proche de
ou sous une forme proche deCode:
1
2
3 std::string temp(cmd); // utilisation du constructeur par copie temp+=" = true"; CString str(temp.c_str());
Code:
1
2
3 std::string temp; // la chaine est vide par défaut temp = cmd + " = true"; CString str(temp.c_str());
Dans la FAQ tu trouves également comment convertir un entier en chaîne en utilisant ostringstream.
Tu as également la version boost plus simple boost::lexical_cast<T>
Version