Bonjour,
Je voudrais savoir comment afficher une ligne de texte entré par l’utilisateur, et la renvoyée en caractère afin qu'elle s'affiche verticalement. Merci de votre aide:ccool:
Version imprimable
Bonjour,
Je voudrais savoir comment afficher une ligne de texte entré par l’utilisateur, et la renvoyée en caractère afin qu'elle s'affiche verticalement. Merci de votre aide:ccool:
En insérant un \n entre chaque caractères ça devrait le faire.
Avec les algorithmes, les flux et une chaîne de caractère :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #include <algorithm> #include <iterator> #include <iostream> #include <string> int main() { std::string line; std::getline(std::cin,line); std::copy( line.begin() ,line.end() ,std::ostream_iterator<char>(std::cout,"\n") ); return 0; }
Salut,
Merci à vous deux.
3DArchi : Ton code marche et je t'en suis très reconnaissant :ccool: mais je pensais que ça serait beaucoup plus simple :mrgreen:
J'ai réussi à le faire en C avec le conseil de adc15 :
Donc en C++, j'ai fait ceci :Code:
1
2
3
4
5
6
7
8
9
10
11
12 #include <stdio.h> int main() { char caractere; while (caractere != '\n') { scanf("%c", &caractere); printf("%c\n", caractere); } return 0; }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <iostream> using namespace std; int main() { char caractere; while (caractere != 'endl') { cin >> caractere; cout << caractere << endl; } return 0; }
Problème : pas d'espace entre chaque mot et le programme continu infiniment...:mrgreen:
Voila, merci
Ben, ma solution est simple puisqu'elle se base uniquement sur la STL C++ :mouarf:
'endl' n'est pas un caractère. Tout au plus aurais-tu pu écrire '\n' :
Mais, bon, je pense que cela ne va pas complètement te convenir. Je te laisse essayer de comprendre comment cin>> fonctionne pour voir pourquoi cette solution n'est que partiellement satisfaisante.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <iostream> using namespace std; int main() { char caractere(0); while (caractere != '\n') { cin >> caractere; cout << caractere << endl; } return 0; }
Salut,
Je vois bien que ceci ne marche que partiellement, mais je trouve pas la solution pour y remédier :(
En utilisant la première proposition de 3DArchi, qui tient en 3 lignes de code, ne demande pas d'écrire explicitement de boucle, et gère bien les espaces ?
Ou, moins bien, en replaçant la ligne adéquate par : cin >> noskipws >> caractere;
Salut JolyLoic,
merci de ton aide, ça marche :ccool:
Je ne connaissais pas noskipws, comme quoi...:)
@+