|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
[C++] ifstream ,stringe e cin
dovendo leggere il nome di un file da tastiera avevo fatto qualcosa del genere
string nomefile; cin>>nomefile; ifstream(nomefile) e mi da errore non riconscendo la stringa come parametro valido. Ho modificato cosi: char* nomefile; cin>>nomefile; ifstream(nomefile) compila ma quando esegue la shell crashia. Ho risolto cosi: string nomefile; cin>>nomefile; const char* nomefile2=nomefile.data(); ifstream(nomefile) Esiste un modo piu elegante di farlo.Possibile che ifstream non acetti in ingresso la stringa e che cin dia problemi con un array di char? Ultima modifica di nuovoUtente86 : 29-10-2007 alle 18:31. Motivo: linguaggio c++ |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Nel secondo c'è un errore perché non allochi spazio per contenere l'array di caratteri
Si fa così: string nomefile; cin >> nomefile; ifstream f(nomefile.c_str()); |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
a quale pezzo di codice mio ti riferisci?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Oct 2007
Città: Milano/Bergamo
Messaggi: 232
|
quoto...devi "trasformarelo" in char,atrimenti non funziona...e si fa attraverso il c_str()..
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
char* nomefile; cin>>nomefile; ifstream(nomefile) Non allochi lo spazio per contenere il buffer di nomefile. Inoltre non essendo inizializzato ti va a tentare di scrivere in una zona di memoria protetta e ti crasha. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:28.




















