PDA

Visualizza la versione completa : [C++] Stringhe con spazi


akiross
15-04-2002, 21:13
Salve gente!
allora, ho una stringa vuota, 80 char,
input dell'utente: gli spazi devono essere supportati.
Come sapete con scanf() ad ogni spazio la stringa è troncata.
Mi avevano detto una funzione x includerli.... qualcosa che centrava con cin.qualcosa...
chemmiditeapproposito??
Arigatou
Sayounara

luigifumero
15-04-2002, 22:28
Ciao,
usa gets()

ciao

akiross
16-04-2002, 20:23
no, gets() non funziona con le stringhe e con gli spazi
si ferma a carattere nullo, cioè lo spazio
grazie cmq

luigifumero
16-04-2002, 20:29
No, funziona, l'hai provata?

Dal MSDN:

The gets function reads a line from the standard input stream stdin and stores it in buffer. The line consists of all characters up to and including the first newline character ('\n').

prova:

#include <stdio.h>

void main( void )
{
char line[81];

printf( "Input a string: " );
gets( line );
printf( "The line entered was: %s\n", line );
}

ciao

akiross
16-04-2002, 20:36
ummm starno a me non funge ne su MS Winz ne su linux
strano...
grazie cmq

Level
16-04-2002, 21:30
Io so che gets() accetta tutti i caratteri fino al primo carattere di nuova linea (quindi fino a quando non si digita INVIO) e aggiunge in fondo alla stringa un carattere NULL, restituendo un puntatore alla stringa.
Però mi sembra che in certi compilatori tempo fa veniva definita deprecated, cioè valida, ma il suo utilizzo era sconsigliabile.
Può darsi sia per questo che crea problemi, prova fgets() definendo come prime parametro il flusso di input, oppure forse sscanf() (adesso non ho sotto mano un compilatore e non posso testarlo).
Ciao.

akiross
18-04-2002, 16:37
umm proverò
Arigatou r°>
ciauz

akiross
15-07-2003, 14:29
Allora, cambio problema. Adesso le stringhe non sono Stringhe C, ma sono classi string, dello Standard Template Library, quindi C++.

Come faccio a prendere anche gli spazi?

Danke
:ciauz:

elevation
15-07-2003, 14:36
cin.getline(nomevar,lunghezza);

???

ChReAn
15-07-2003, 14:57
Ciao akiross, sei quello del forum di mp.it vero? :ciauz:

Qui di seguito un pezzo di codice che dovrebbe fare al caso tuo, appena compilato da me con gcc 3 su linux ma è scritto in ANSI C++, quindi dovrebbe girare su qualsiasi compilatore ANSI.


#include <iostream>
#include <string>

void main ()
{
string stringa;
getline (cin, stringa);
cout << stringa << endl;
}

Loading