|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2008
Messaggi: 401
|
[RISOLTO][C++] Cin >> stringa, si ferma al primo spazio
Salve a tutti.
Ho fatto una ricerca sul forum, ma non ho trovato niente... o nessuno ne a mai avuto bisogno (cosa molto poco probabile) o sono io che sono niubbo Il problema è quando uso cin per prendere in input una stringa. Se essa contiene spazi, tipo "Ciao, amico!" viene memorizzato solo "Ciao,". Come posso fare per recuperare tutta la stringa? Ultima modifica di agente mm8 : 27-11-2009 alle 20:41. Motivo: Problema risolto |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
string str;
getline(cin, str); |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
|
Ciao,
Lo spazio è considerato separatore di parametro, per questo "Ciao, amico" la rileggi sono con due cin successive (stesso comportamento della scanf, per intenderci). Per aggirare il problema dovresti usare la cin.getLine(); che si ferma all'invio (\n) o eventualmente ad un altro carattere che puoi specificare come delimitatore. La funzione prende in input un buffer, la sua dimensione (al più legge N caratteri) ed opzionalmente un char che indica il delimitatore. Edit: Ops, crossposting... nota che io ho proposto questa: http://www.cplusplus.com/reference/i...tream/getline/ che lavora su un char[], mentre Elche ha proposto questa: http://www.cplusplus.com/reference/string/getline/ che lavora con una std::string... hai l'imbarazzo della scelta. In ogni caso entrambe fanno quello che chiedi. Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com Bottomap is a proud Masterdrive.it moderator Ultima modifica di bottomap : 27-11-2009 alle 16:16. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2008
Messaggi: 401
|
Grazie mille a tutti, provo e vi faccio sapere
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Nov 2009
Messaggi: 10
|
io conosco 2 soluzioni al tuo problema...
la prima Codice:
string stringa; getline (cin, stringa); Codice:
char buffer[256]; cin.getline(buffer,sizeof(buffer)); |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2008
Messaggi: 401
|
Hmm... ho fatto un codice di esempio con getline e funge, nel mio no T_T
Vabbé, avrò sbagliato sicuramente qualcosa. Vado a controllare... grazie per l'aiuto! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:16.



















