Problem z wczytywaniem z pliku i zapisem
Ostatnio zmodyfikowano 2013-12-28 14:56
operation_argo Temat założony przez niniejszego użytkownika |
Problem z wczytywaniem z pliku i zapisem » 2013-12-26 21:11:59 Witam, mam pewien problem..Mam plik .txt w którym mam coś takiego: Data: 12 grudnia 2013r. Od kogo: przykladowyemail@email.com Do kogo: kolega@email.com temat: wiadomość testowa Cześć! To jest wiadomość testowa. Pozdrawiam Maciek Co zrobić, żeby program przy wczytywaniu danych z pliku .txt kopiował to co jest za data: , od kogo: , do kogo: , temat: ?? Mam na razie coś takiego, ale to jedynie wczytuje mi cały ten plik..chciałbym otrzymać taki plik: 12 grudnia 2013r. przykladowyemail@email.com kolega@email.com wiadomość testowa Cześć! To jest wiadomość testowa. Pozdrawiam Maciek Oto kod mojego programu #include<iostream> #include<fstream> #include<string>
using namespace std;
int main() { ifstream plik; ofstream out; string wyraz; plik.open( "plik.txt", ios::in ); if( !plik ) { cerr << "Nieudane otwarcie pliku " << endl; exit( 1 ); } else cout << "Prawidlowe otwarcie pliku" << endl; out.open( "wynik.txt", ios::out ); while( !plik.eof() ) { getline( plik, wyraz ); out << wyraz << endl; } out.close(); plik.close(); return 0; }
|
|
Pokropow |
zmaiana » 2013-12-28 13:43:08 Po wczytaniu wyraz z getline musisz zmodyfikować go tak, aby wyświetlał dane dopiero po znaku ':'. Niestety nie wiem jak to zrobić na klasie string. Mogę ci to pokazać na tablicach char'ów. funkcja zmieniająca: void zmien( const char * in, char * out ) { int i = 0; while( in[ i ] != ':' && i < strlen( in ) ) { i++; } if( i < strlen( in ) ) strcpy( out, in + i + 2 ); else strcpy( out, in );
cały kod: #include <iostream> #include <string.h> #include<fstream>
void zmien( const char * in, char * out ) { int i = 0; while( in[ i ] != ':' && i < strlen( in ) ) { i++; } if( i < strlen( in ) ) strcpy( out, in + i + 2 ); else strcpy( out, in ); }
using namespace std;
int main() { ifstream plik; ofstream out; string wyraz; char temp[ 1000 ]; plik.open( "plik.txt", ios::in ); if( !plik ) { cerr << "Nieudane otwarcie pliku " << endl; return 1; } else cout << "Prawidlowe otwarcie pliku" << endl; out.open( "wynik.txt", ios::out ); while( !plik.eof() ) { getline( plik, wyraz ); zmien( wyraz.c_str(), temp ); out << temp << endl; } out.close(); plik.close(); return 0; }
dobrze? |
|
00Andre |
» 2013-12-28 14:56:31 Możesz wyczytać getline, a potem za pomocą funkcji erase usunąć "Data:" i tak dalej i zostanie w stringu sama data podana #include <iostream> #include <string>
using namespace std;
int main() { string data = "Data : 12 grudnia 2013r."; data.erase( 0, 7 ); cout << "Data wyczytana z pliku : " << data << endl; return 0; }
|
|
« 1 » |