Ogni volta che immetto una variabile utilizzando cin
, dopo l'immissione di un hit, si passa automaticamente a una nuova riga. Sono curioso di sapere se esiste un modo per utilizzare cin
senza che sia necessario passare a una nuova riga. Sto desiderando di cin
e cout
più cose sulla stessa riga nel prompt dei comandi. È possibile?Come posso inserire variabili usando cin senza creare una nuova riga?
risposta
Non è possibile utilizzare cin
o qualsiasi altro input standard per questo. Ma è certamente possibile ottenere l'effetto che stai cercando. Vedo che sei su Windows utilizzando Visual Studio, quindi puoi utilizzare, ad esempio, _getch. Ecco un esempio che legge fino al prossimo spazio bianco e memorizza il risultato in una stringa.
#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;
}
Non è molto buono. Ad esempio, non gestisce molto bene l'input di caratteri non stampabili. Ma dovrebbe darti un'idea di cosa devi fare. Potresti anche essere interessato allo Windows API keyboard functions.
Se si desidera un pubblico più ampio, è necessario esaminare alcune librerie multipiattaforma, ad esempio SFML o SDL.
Non è possibile. Per citare @Bo Persson, non è qualcosa controllato da C++, ma piuttosto dalla finestra della console.
Non credo che ciò che si vuole fare possa essere raggiunto con cin. Quello che puoi fare è scrivere tutto il tuo input in una riga, con un delimitatore a tua scelta, e analizzare la stringa di input.
Come altri hanno notato, non è possibile farlo con cin
, ma è possibile farlo con getchar()
. Che cosa si dovrebbe fare è:
- raccogliere ogni carattere utilizzando singolarmente
getchar()
(aggiunta di ogni al fine di unastring
come si legge, ad esempio), quindi - dopo aver letto ogni personaggio, decidere quando hai raggiunto la fine del valore di una variabile (ad esempio rilevando uno o più caratteri
' '
nell'input, se stai leggendo inint
odouble
valori), quindi - se hai raggiunto la fine del testo per una variabile, converti la stringa di caratteri che hai inserito in una variabile del tipo appropriato (es.
int
,double
, ecc), quindi - uscita qualsiasi contenuto sulla linea che potrebbe essere necessaria, e quindi
- proseguire per la prossima variabile che stai leggendo in.
Gestione degli errori robustamente sarebbe essere complicato quindi non ho scritto alcun codice per questo, ma puoi vedere l'approccio che potresti usare.
: Quando ho visto la risposta di @Benjamin Lindley ho cercato di scrivere un codice veloce per farlo con 'getchar()' come avevo suggerito e ho scoperto che non potevo. A prescindere da ciò che ho fatto (ad esempio, il flushing dell'output, ecc.) Non sono riuscito a scrivere l'output fino a quando non avevo premuto "Invio" sulla riga di input, quindi non potevo intercettare input e output sulla stessa linea. – Simon
è possibile utilizzare anche lo spazio per ingresso invece di entrare qualcosa di simile:
cin >> a >> b >> c;
e in ingresso si digitare
10 20 30
poi
a=10
b=20
c=30
Basta usare il gotoxy dichiarazione. puoi premere 'invio' e inserire valori nella stessa riga per es. in ingresso di un 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();}'
'int main'! : P Ti prego, dagli dei, di 'che non scrivi questo codice nel mondo reale. – Xupicor
non posso commentare, ma se si lascia spazi tra interi allora si può ottenere l'effetto desiderato. Funziona anche con cin
.
int a, b, c;
cin>>a; cin>>b; cin>>c;
Se si immettono i valori come 10 20 30
poi vengono memorizzati in a, b, e C rispettivamente.
- 1. Inserire una nuova entità senza creare entità figlio se esistono
- 2. Come si legge una riga completa dall'utente usando cin?
- 3. Inserire una nuova riga nella DataTable
- 4. Come posso stampare una nuova riga senza svuotare il buffer?
- 5. Come aggiungere una nuova riga in una JLabel con variabili
- 6. È possibile ottenere l'input dell'utente senza inserire una nuova linea?
- 7. Come inserire un elemento textNode javascript su una nuova riga
- 8. print() senza una nuova riga in Dart?
- 9. Inserire una nuova riga in Excel Formula (MacOS)
- 10. NSLog senza nuova riga
- 11. Cin senza aspettare input?
- 12. Come aggiungere una nuova riga a JLabel senza utilizzare l'HTML
- 13. Come posso creare una nuova annotazione?
- 14. Inserire nuova riga in javascript stringa
- 15. Come inserire a livello di codice una nuova riga in una cella di Excel in C#?
- 16. Come iniziare una nuova riga in C++, mentre facendo equazioni
- 17. Come si aggiunge una nuova riga usando printf?
- 18. Come posso creare una nuova riga dopo un elemento di bootstrap di Twitter?
- 19. PHP fwrite() come inserire una nuova riga dopo qualche riga specifica
- 20. Come posso stampare una stringa sulla console senza una nuova riga alla fine?
- 21. Copia negli appunti in PowerShell senza una nuova riga
- 22. come inserire nuova riga dopo un carattere specifico in script
- 23. Creare una nuova riga senza utilizzare <br> in HTML
- 24. Come creare una nuova cartella?
- 25. Come posso iniziare una nuova riga HTML da PHP?
- 26. Come posso visualizzare una nuova riga in .text() in jQuery?
- 27. Come posso stampare correttamente una nuova riga in Haskell?
- 28. Come evitare di creare una nuova riga se esiste una riga simile?
- 29. Stringa di stampa Haskell senza nuova riga
- 30. creare nuova lista senza cambiare l'elenco originale
@andre Quando si preme return dovrebbe rimanere sulla stessa riga. –
No. Non è un linguaggio. È come funziona la finestra della console. –
Ok, grazie. –