Chaque fois que je saisis une variable à l'aide de cin
, après une frappe, elle passe automatiquement à une nouvelle ligne. Je suis curieux de savoir s'il existe un moyen d'utiliser cin
sans le laisser passer à une nouvelle ligne. Je veux cin
et cout
plusieurs choses sur la même ligne dans la commande Invite. Est-ce possible?
Vous ne pouvez pas utiliser cin
ou toute autre entrée standard pour cela. Mais il est certainement possible d’obtenir l’effet recherché. Je vois que vous utilisez Windows avec Visual Studio, vous pouvez donc utiliser, par exemple, _getch . Voici un exemple qui lit jusqu'au prochain espace et stocke le résultat dans une chaîne.
#include <conio.h> // for _getch
std::string get_Word()
{
std::string Word;
char c = _getch();
while (!std::isspace(c))
{
Word.Push_back(c);
std::cout << c;
c = _getch();
}
std::cout << c;
return Word;
}
Ce n'est pas très bon. Par exemple, il ne gère pas très bien la saisie de caractères non imprimables. Mais cela devrait vous donner une idée de ce que vous devez faire. Vous pouvez également être intéressé par les fonctions du clavier de l'API Windows .
Si vous voulez un public plus large, vous voudrez peut-être vous intéresser à des bibliothèques multiplates-formes, comme SFML ou SDL .
vous pouvez également utiliser un espace pour la saisie au lieu de saisir
cin >> a >> b >> c;
et en entrée vous tapez
10 20 30
puis
a=10
b=20
c=30
Comme d'autres l'ont fait remarquer, vous ne pouvez pas faire cela avec cin
, mais vous pouvez le faire avec getchar()
. Ce que vous devez faire c'est:
getchar()
(en ajoutant chacun à la fin d'une string
telle qu'elle est lue, par exemple), puis' '
dans l'entrée, si vous lisez des valeurs int
ou double
), int
, double
, etc.), puisLa gestion robuste des erreurs serait compliquée, je n'ai donc écrit aucun code pour cela, mais vous pouvez voir l'approche que vous pouvez utiliser.
Je ne pense pas que ce que vous voulez faire puisse être réalisé avec cin. Ce que vous pouvez faire est d'écrire toutes vos entrées sur une seule ligne, avec le séparateur de votre choix, et d'analyser la chaîne d'entrée.
Ce n'est pas possible. Pour citer @Bo Persson, ce n'est pas quelque chose qui est contrôlé par C++, mais plutôt la fenêtre de la console.
utilisez simplement l'instruction gotoxy. vous pouvez appuyer sur 'entrée' et entrer des valeurs sur la même ligne en entrée d'une matrice 3 * 3:
'#include<iostream.h>
#include<conio.h>
void main()
{clrscr();
int a[20][20],x,y;
cout<<"Enter the matrix:\n ";
for(int r=2;r<7;r+=2)
for(int c=2;c<7;c+=2)
{gotoxy(c,r);
cin>>a[r][c];
}
getch();}'
Je ne peux pas commenter, mais si vous laissez des espaces entre les entiers, vous pouvez obtenir l'effet souhaité. Cela fonctionne aussi avec cin
.
int a, b, c;
cin>>a; cin>>b; cin>>c;
Si vous entrez vos valeurs sous la forme 10 20 30
, elles seront stockées dans a, b et c respectivement.