PDA

View Full Version : [c++]Problema inserimento stringa


araxe
27-04-2009, 20:26
Salve.
allora l'utente deve dare in input una stringa e gli spazi devono essere supportati.
Con scanf() ad ogni spazio la stringa è troncata ed anche con cin (almeno credo) come posso fare??
grazie:D

BrutPitt
27-04-2009, 21:36
Salve.
allora l'utente deve dare in input una stringa e gli spazi devono essere supportati.
Con scanf() ad ogni spazio la stringa è troncata ed anche con cin (almeno credo) come posso fare??
grazie:D

Sei sicuro?
Se fossi in te controllerei meglio la documentazione di scanf()... magari al posto di %s guarda come si usa %[...]

:)

71104
27-04-2009, 21:55
getline: http://www.cplusplus.com/reference/string/getline/

araxe
28-04-2009, 17:39
Ho provato ad usare getline cosi:

#include <iostream>
#include <string>
using namespace std;

int main () {
string indirizzo;
getline (cin,indirizzo);
}

Ma mi da una serie di errori tipo:

error C4430: identificatore di tipo mancante, verrà utilizzato int. Nota: default-int non è più supportato

error C2065: 'indirizzo': identificatore non dichiarato

Scusate ma sono veramente agli inizi.. :rolleyes:

||ElChE||88
28-04-2009, 17:51
Il codice che hai scritto è corretto...
Che compilatore usi?

71104
28-04-2009, 17:56
Il codice che hai scritto è corretto...
Che compilatore usi? Visual Studio, mi pare evidente; piuttosto sarebbe utile sapere i numeri di linea a cui sono segnati quegli errori.
domanda anti-scemo: hai salvato quel sorgente con estensione .cpp, e non .c ?

edit - ah, ti manca il "return 0;" alla fine del main, ma non credo sia quello il problema.

||ElChE||88
28-04-2009, 18:07
domanda anti-scemo: hai salvato quel sorgente con estensione .cpp, e non .c ?
Ci avevo pensato anche io, ma provando a compilare come C gli errori sono molti di più (i headers...).

araxe
28-04-2009, 18:09
Uso visual studio cmq ho strutturato cosi il programma:
cliente.h
class cliente
{
public:
string nome[50];
string cognome[60];
string indirizzo[80];
void inserisci_nome();
void inserisci_cognome();
void inserisci_indirizzo();
};

ed il cliente.cpp

#include <iostream>
#include <string>
#include <limits>
#include "cliente.h"
using namespace std;
void cliente::inserisci_nome()
{
cout<<"inserisci il nome del dipendente:";
getline (cin, nome);
cout<< endl;
}
...
int main()
{
cliente cliente;
cliente.inserisci_nome();
cliente.inserisci_cognome();
cliente.inserisci_indirizzo();


cout<< "Il nome del dipendente è:"<<cliente.nome;
cout<< endl;
cout<< "Il cognome del dipendente è:"<<cliente.cognome;
cout<< endl;
cout<< "L' indirizzo del dipendente è:"<<cliente.indirizzo;
cout<< endl;
system("PAUSE");
}

71104
28-04-2009, 18:49
cliente.h
class cliente
{
public:
string nome[50];
string cognome[60];
string indirizzo[80];
void inserisci_nome();
void inserisci_cognome();
void inserisci_indirizzo();
}; perché usi vettori di 50, 60 e 80 stringhe? probabilmente intendevi dire:
class cliente
{
public:
string nome;
string cognome;
string indirizzo;
void inserisci_nome();
void inserisci_cognome();
void inserisci_indirizzo();
};

inoltre la direttiva "using namespace std;" va messa prima dell'#include di client.h, ma dopo gli include delle STL; probabilmente é quello l'errore.

araxe
28-04-2009, 18:56
Si si giusto mi ero dimenticato di toglierlo poichè all'inizio avevo dichiarato le variabili char.
Cmq l'errore era proprio quello del namespace std mettendolo prima #include "cliente.h" e dopo le librerie..:D
Grazie mille a tutti