malan Temat założony przez niniejszego użytkownika |
Odczytywanie danych z pliku » 2009-03-20 20:28:42 Witam. Mam następujący problem, z którym sam sobie nie dam rady... Otóż mam plik 'x', z którego chce odczytać dane. Więc: string a; fstream plik( "x", ios::binary | ios::in ); getline( plik, a ); Tu się pojawia problem. Dane w tym pliku są negowane i mają taką postać: '’žLž’–'. W hex edytorze wygląda to trochę inaczej: '9a9e4c9e9296' Napisałem kod, który '9a9e4c9e9296' zamienia na tekst. Czyli odkodowuje to po prostu, ale nie mogę wymyślić co zrobić żeby zamienić pobrane dane '’žLž’–' na '9a9e4c9e9296'. |
|
DejaVu |
» 2009-03-20 20:53:19 Jeden znak = wartość z zakresu 0..255. Wyświetl każdy znak w postaci szesnastkowej (zwanej hexadecymalną) i po zawodach :) char znak = 'x'; printf( "%x", znak ); Możesz też napisać sobie własną funkcję. Możesz też spróbować skorzystać z funkcji itoa(): char znak = 'x'; char bufor[ 30 ]; itoa( znak, bufor, 16 ); cout << bufor; |
|
malan Temat założony przez niniejszego użytkownika |
» 2009-03-20 21:27:07 Hmm... wiem, że muszę zamienić te 'krzaczki' na system szesnastkowy. Tylko coś mi nie wychodzi... Wiem, że znaki mają wartość od 0-256 (mam przed sobą kody ASCII). Skoro dane w tym pliku są zanegowane to można by odczytać ich kod pomnożyć razy -1 i dodać 1, potem zapisać do jakieś zmiennej string i gotowe..., ale tak się nie da jednak... Z itoa też mi nie wychodzi... |
|
malan Temat założony przez niniejszego użytkownika |
Udało się ;) » 2009-03-21 00:17:02 #include <iostream> #include <string> #include <fstream> #include "console.ddt" #include <conio.h> using namespace std; using namespace ddt::console; int main() { int i = 0, a = 0; fstream plik( "a1.txt", ios::in ); string dane; if( plik.good() == true ) { do { getline( plik, dane ); i =( dane[ a ] + 1 ) *( - 1 ); printf( "%c", i ); a++; } while( a < dane.length() ); } else { cout << "Error !!!" << endl; } getch(); return( 0 ); }
Udało się- działa ;) Dzięki. /Moglibyście mi odpowiedzieć na takie drobne pytania: 1. Czy jest możliwość żeby zapisywać dane do pliku jedno pod drugim np. dane1 dane2 dane3 ..., a nie: dane1dane2dane3? 2. Da się napisać program, który odczytywał by dane z kilku plików np. Plik1, Plik2, Plik3. Za pomoc 1 programu odczytać z nich wszystkich (jakieś) dane? 3. W pliku są następujące dane: sadahsfjagdfhagfjęzykc++31212155101asdasdad . Da się tak zrobić żeby zacząć pobieranie danych po 'językc++' a skończyć na '01'? Nie oczekuje, żeby ktoś podał mi gotowe rozwiązania tylko powiedział czy w ogóle da się takie coś stworzyć. |
|
GoldWolf |
» 2009-03-21 06:54:59 1. Da się, tu jest rozwiązanie. 2. Również: ifstream strumien; strumien.open( mama )
strumien.close(); strumien.clear(); strumien.open( tata )
strumien.close(); strumien.clear();
strumien.open( brat )
strumien.close(); strumien.clear();
3. Polecam użycie klasy string, na pewno do tego się nada. |
|
malan Temat założony przez niniejszego użytkownika |
» 2009-03-21 17:31:24 Dziękuje bardzo. Biorę się do roboty ;D. Pzdr. |
|
GoldWolf |
» 2009-03-21 17:33:19 Najwyższy czas ;-) |
|
« 1 » |