bonjour je voudrais savoir comment
stocker un entier <255 dans un string de taille 3
et qu'il soit toujours aligné à droite
merci
bonjour je voudrais savoir comment
stocker un entier <255 dans un string de taille 3
et qu'il soit toujours aligné à droite
merci
Bonjour,
Voici un petit code (écrit à la "va vite") qui pourra peut être t'inspirer.
Cordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 #include<string> #include<iostream> std::string int2string( int ii) { char s[255]; sprintf( s, "%i", ii); return s; } void main () { int monInteger; std::cin >> monInteger; // ici j'ai un int : par exemple 45 std::string monString1 = int2string(monInteger); // ici j'ai un string : "45" int taille = static_cast<int>(monString1.size()); // ici, taille est égal à 2 if (taille == 3) { finalString = monString1; } if (taille < 3) { int pas = 3 - taille; std::string finalString(" "); // 3 caractères for (int zz=0; zz<taille;zz++) { finalString[pas] = monString1[zz]; pas++; } } }
A.
je voulais justement eviter de faire des IF mon entier <10 <100 etc
je crois en C# il y a un truc comme string s=String.Format({0,3:0},monentier); qui permet de faire ça
comment en C++?
Bonjour,
Je ne crois pas que std::string offre nativement cette fonctionnalité.
Par contre, tu peux exploiter le c_str() avec un printf :
http://www.cplusplus.com/reference/c...cstdio/printf/
Cordialement,
A.
Bonjour,
La F.A.Q. t'indique comment écrire un nombre dans un string.
Tu as quelques options de formatage dans la STL.
Pour quelque chose de vraiment fin, tu as Boost.Format.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Bonjour,
width sert à ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <string> #include <iostream> #include <sstream> using namespace std; string inttostr(const int i) { stringstream ss; ss.width(3); ss << i; return ss.str(); } int main(void) { for(int i = 0; i < 255; i +=32) { cout << inttostr( i ) << endl; } return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 0 32 64 96 128 160 192 224
En C, sprintf permet d'aligner à droite facilement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 std::string int2string(int ii) { char s[255]; sprintf( s, "%3d", ii); return s; }
ok merci Mabu
normalement je vais utiliser le printf avec %3d
mais dis moi comment on peut convertir un std::string en char *
pour ta solution avec stringstream parceque c'est plutot un char* qu'il me faudrait en sortie
Ou sinon:
Sinon pour if faut utiliser mastring.c_str() pour faire ta conversion.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void convertir(char *dest, size_t entier) { for (i = 2; i >= 0; i--) { dest[i] = '0' + (entier % 10); entier /= 10; } } int main() { char abc[10] = {0}; convertir(abc, 37); return 0; }
Partager