PDA

View Full Version : getline con c++


redribbon
03-05-2003, 13:49
Voglio prendere da tastiera una stringa che deve poter contenere spazi.....
vi mostro un caso semplificato:

#include <iostream>
#include <string>

using namespace std;

void main(){
string s;
cout<<"inserisci stringa"<<endl;

getline(cin,s);

cout<<s<<endl;
}

in questo modo mi prende anche gli spazi pero dopo battuto la stringa e premuto invio rimane tutto fermo (come se avessi usato il getch() del conio.h) finche non premo un altro invio......
si puo risolvere questo problema?

ciao e grazie a tutti :)

ps:lo stesso problema lo trovo anche se uso la cin.get() del c con un puntatore a carattere invece che con una stringa.....

/\/\@®¢Ø
03-05-2003, 15:28
Originally posted by "redribbon"

Voglio prendere da tastiera una stringa che deve poter contenere spazi.....
vi mostro un caso semplificato:

#include <iostream>
#include <string>

using namespace std;

void main(){
string s;
cout<<"inserisci stringa"<<endl;

getline(cin,s);

cout<<s<<endl;
}

in questo modo mi prende anche gli spazi pero dopo battuto la stringa e premuto invio rimane tutto fermo (come se avessi usato il getch() del conio.h) finche non premo un altro invio......
si puo risolvere questo problema?

ciao e grazie a tutti :)

ps:lo stesso problema lo trovo anche se uso la cin.get() del c con un puntatore a carattere invece che con una stringa.....
In teoria dovrebbe bastare un solo , ed in effetti e' quel che succede a me. Che compilatore usi ?

Non so se esista nella libreria standard una funzione per eliminare gli spazi alle estremita'.
Non e' comunque difficile, per gli spazi alla fine puoi ad esempio applicare la seguente funzione alla stringa appena letta.


void trim( string& s )
{
string::size_type l = s.find_last_not_of( " " );
s.replace( l+1 , s.size() , "" );
}

Se vuoi eliminare quelli all'inizio basta togliere il [i]not e usare come indici 0 e l

redribbon
03-05-2003, 15:43
come compilatore uso Visual C++ 6 :eek: :eek:

redribbon
04-05-2003, 21:56
sul fatto del compilatore mi avevi fatto venire un dubbio :)
ho provato allora a compilare sotto linux e li il problema scompare...... è il secondo problema che trovo con il vc++.... tempo fa mi ero accorto che anche se dichiaravo un metodo esterno a una classe in modo friend non mi permetteva di accedere ai campi privati della classe ..... mha microsoft :rolleyes:

sapete mica se esiste una patch o qualcosa del genere per eliminare/ridurre i problemi del vc++ ?

Loprix
10-05-2003, 13:35
Originally posted by "redribbon"

sul fatto del compilatore mi avevi fatto venire un dubbio :)
ho provato allora a compilare sotto linux e li il problema scompare...... è il secondo problema che trovo con il vc++.... tempo fa mi ero accorto che anche se dichiaravo un metodo esterno a una classe in modo friend non mi permetteva di accedere ai campi privati della classe ..... mha microsoft :rolleyes:

sapete mica se esiste una patch o qualcosa del genere per eliminare/ridurre i problemi del vc++ ?

Il Borland C++ Builder :D :D

/\/\@®¢Ø
10-05-2003, 15:43
Patch temo proprio di no. Potresti provare con una versione piu' recente del compilatore oppure (alternativa decisamente piu' economica) con un altro compilatore gratuito. Per windows c'e' il compilatore da linea di comando della borland (forse esiste anche una "personal edition" dell'intero IDE), oppure il compilatore della GNU.
Per quest'ultimo esiste un IDE completo e gratuito (che comprende il compilatore) che si chiama dev-cpp e si puo' trovare su http://www.bloodshed.net/devcpp.html

redribbon
12-05-2003, 09:04
grazie! adesso provo a scaricare il compilatore della GNU :)