Formattage de chaine concis

Formattage de chaine concis - C++ - Programmation

Marsh Posté le 01-04-2003 à 09:34:16    

Bonjour,
 
Je dois contruire une chaine (dans un tableau que j'alloue a la bonne taille) avec les champs suivants:
- url(pas de longueur definie)
- login (12 caracteres, completes par des espaces si necessaire)
- password (8 caracteres, completes aussi)
Objectif: les perfs on s'en moque , il faut qu'il n'y ait pas de bug et que ca soit lisible et concis.
 
Je voulais faire ca avec un "sprintf", mais quand on specifie un champs de cette facon:

Code :
  1. sprintf(dst, "%12s", toto);


Ca rajoute des espaces a gauche et non a droite. Comment feriez vous ? Le probleme est tout bete, mais je suis sur qu'il y a un moyen de faire avec un nombre de lignes de code minimal et en faisant le moins possible de calcul d'offset.
Moi j'ai fait comme ca.
 
// je dispose de ca comme donnees en entree, j'ai deja verifie que login et password ne sont pas trop long

Code :
  1. const std::string &url;
  2. const std::string &login;
  3. const std::string &password;


 

Code :
  1. const size_t LOGIN_LEN = 12;
  2. const size_t PASS_LEN = 8;
  3. std::ostringstream result;
  4. result << url << login;
  5. std::fill_n(std::ostream_iterator<char>(result), LOGIN_LEN-login.size(), ' ');
  6. stream << password;
  7. std::fill_n(std::ostream_iterator<char>(result), PASS_LEN-password.size(), ' ');
  8. char *array = new char[result.str().size()+1];
  9. strpcy(array, result.str().c_str());


Message édité par kenshiro182 le 01-04-2003 à 09:35:32
Reply

Marsh Posté le 01-04-2003 à 09:34:16   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed