|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jun 2008
Messaggi: 42
|
[C++]Problema con ifstream e getline()
Sto cercando di copiare il contenuto del file "asd1.txt" (contente 3 righe di testo) nel file "asd2.txt" (vuoto). Entrambi sono nella stessa cartella del file contenente il codice del programma, ma niente sembra funzionare. Il codice è il seguente:
Codice:
#include <fstream> #include <string> using namespace std; int main() { ifstream in("asd1.txt"); ofstream out("asd2.txt"); string s; while(getline(in, s)) { out << s << "\n"; } return 0; } |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
inoltre c'é un errore concettuale: la versione di getline che tu usi estrae caratteri fino al terminatore di linea oppure fino alla fine dello stream, qualunque venga incontrata prima; nel caso della fine dello stream tu scrivi comunque un terminatore di linea, quindi se il file asd1.txt non si conclude con un terminatore di linea il file asd2.txt sará diverso perché invece si concluderá con un terminatore di linea. per copiare brutalmente un file in un altro non vedo il bisogno di usare il formatted I/O: io userei i metodi di I/O binario, cioé istream::read e ostream::write. |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Puoi usare anche una combinazione di std::copy, std::istream_iterator e std::ostream_iterator se vuoi una soluzione più compatta.
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2007
Città: Palestro
Messaggi: 1957
|
Quoto fero86..se devi copiare brutalmente un file in un altro (senza specifiche..nel senso, se non è un esercizio di scuola con queste esplicite richieste!), andrei di read/write senza preoccuparmi troppo della lettura e della scrittura formattata..
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jun 2008
Messaggi: 42
|
Io stavo usando quel codice perchè è ciò che ho trovato scritto nel libro che sto leggendo.
Potreste spiegarmi meglio in cosa consistono i metodi good(), istream::eof(), istream::read() e istream::write()? |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Jun 2008
Messaggi: 42
|
Siccome ho iniziato da poco il C++ non ho capito più di tanto dalla pagina linkata.
Qualcuno potrebbe farmi un esempio dell'utilizzo di quelle funzioni e spiegarmi bene come si usano? |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Sono abbastanza autoesplicative: "good()" ti dice se lo stream aperto è in una condizione accettabile per la lettura/scrittura dello stesso, "eof()" indica che lo stream di input è terminato, "read()" legge una sequenza di byte dallo stream e "write()" ve la scrive.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#9 | |
Member
Iscritto dal: Jun 2008
Messaggi: 42
|
Quote:
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:23.