Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1507 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Simplifier une ligne de push_back (string) répétitifs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Simplifier une ligne de push_back (string) répétitifs

n°2291323
Lt Ripley
Ils ont tout niqué
Posté le 08-11-2016 à 16:26:49  profilanswer
 

Salut !
 
Je voudrais savoir si je peux simplifier cette ligne :
 

Code :
  1. if (lettreBin[0]=='0')  {final.push_back('0'); final.push_back('0'); final.push_back(' '); final.push_back('0'); }  // fonctionne mais long à taper
  2. if (lettreBin[0]=='0')  {final.push_back('0','0',' ','0'); }  //ne fonctionne pas, ni avec des ; pour séparer
  3. if (lettreBin[0]=='0')  {final.push_back("00 0" ); }  // ne fonctionne pas non plus


 
Thank you


Message édité par Lt Ripley le 29-11-2016 à 14:18:35
mood
Publicité
Posté le 08-11-2016 à 16:26:49  profilanswer
 

n°2291334
xilebo
noone
Posté le 08-11-2016 à 20:19:25  profilanswer
 

Code :
  1. if (lettreBin[0]=='0')  {final.append(2,'0').append(1,' ').append(1,'0'); }


 
 
?
 
ou plus simple encore :
 

Code :
  1. if (lettreBin[0]=='0')  {final.append("00 0" ); }

n°2291362
Lt Ripley
Ils ont tout niqué
Posté le 08-11-2016 à 23:13:34  profilanswer
 

Niquel ! merci bien

n°2291363
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 08-11-2016 à 23:57:32  profilanswer
 

Si tu as besoin de faire des concaténations successives dans une string, tu peux utiliser la classe ostringstream qui permet d'utiliser l'opérateur << consécutivement:
 

Code :
  1. #include <sstream>
  2. ...
  3. std::ostringstream lettreBin;
  4. lettreBin << '0' << '0' << ' ' << '0';
  5. // Ou, en beaucoup plus concis:
  6. lettreBin << "00 0";
  7. std::string lettreBinStr = lettreBin.str();


 
Ça a l'avantage de souvent être plus joli syntaxiquement qu'un paquet d'append successifs, et ça permet aussi de concaténer facilement d'autres types que les strings.


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2291364
theshockwa​ve
I work at a firm named Koslow
Posté le 09-11-2016 à 00:45:29  profilanswer
 

quel est le type de ta variable final ?


---------------
last.fm
n°2291448
Lt Ripley
Ils ont tout niqué
Posté le 09-11-2016 à 11:22:03  profilanswer
 

Merci les gars
 
final est un string.  Pour le coup .append me va bien car je suis pas obligé de créer un flux (ostringstream)
 
.str() c'est comme .to_string() ?
 
Plus haut dans mon programme je suis obligé de faire un .to_string() sur un string pourtant, pour pouvoir le concaténer ensuite avec un +=
 
Avec un flux et l'opérateur << jepeux concaténer des int ?  Du genre (pour un int a qui fait 10) si je fais << 10 ça va faire 1010 ?

n°2291454
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 09-11-2016 à 11:49:53  profilanswer
 

Lt Ripley a écrit :

Merci les gars
 
final est un string.  Pour le coup .append me va bien car je suis pas obligé de créer un flux (ostringstream)
 
.str() c'est comme .to_string() ?
 
Plus haut dans mon programme je suis obligé de faire un .to_string() sur un string pourtant, pour pouvoir le concaténer ensuite avec un +=
 
Avec un flux et l'opérateur << jepeux concaténer des int ?  Du genre (pour un int a qui fait 10) si je fais << 10 ça va faire 1010 ?


Oui avec ostringstream tu peux concaténer int, bool, string sans te soucier d'avoir à appeler un to_string() au préalable.
 
(Par contre je ne comprends pas pourquoi tu dois appeler to_string sur un string :o )


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2291456
Lt Ripley
Ils ont tout niqué
Posté le 09-11-2016 à 12:20:05  profilanswer
 

C'est après ça que je dois appeler to_string (sur binStr)
 

Code :
  1. bitset<7>binStr(valeur);  //ça met le binaire de valeur dans binStr qui est déclaré comme string juste au dessus


 
Sinon j'ai ça (je viens de le refaire) :   error: no match for 'operator+=' (operand types are 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' and 'std::bitset<7u>')|
 
Quand je fais motBin += binStr


Message édité par Lt Ripley le 09-11-2016 à 12:23:45
n°2292460
Lt Ripley
Ils ont tout niqué
Posté le 22-11-2016 à 17:44:56  profilanswer
 

On peut aussi faire ça sur le string (nommé final) je n'y ai pas pensé
 

Code :
  1. final += "00 0"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Simplifier une ligne de push_back (string) répétitifs

 

Sujets relatifs
Convertir binaire en string (noob) [résolu][Python] Replace string tuple
Donner des cours pour Les TD et TP en C[ C ] - Question sur les tableaux de pointeurs
faire une somme avec nom d'onglet et ligne variable en VBAVerifier l'état de la fenêtre d'un exe en C #
delphi - envoi de ligneSupprimer derniere ligne d'un fichier SANS le parcourir
Comment faire un saut de ligne (noob) ?Revenir au C
Plus de sujets relatifs à : Simplifier une ligne de push_back (string) répétitifs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR