Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Odczytywanie danych z pliku

Ostatnio zmodyfikowano 2009-03-21 17:33
Autor Wiadomość
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:

C/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'.

P-4865
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 :)

C/C++
char znak = 'x';
printf( "%x", znak );
Możesz też napisać sobie własną funkcję. Możesz też spróbować skorzystać z funkcji itoa():
C/C++
char znak = 'x';
char bufor[ 30 ];
itoa( znak, bufor, 16 );
cout << bufor;
P-4866
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...
P-4868
malan
Temat założony przez niniejszego użytkownika
Udało się ;)
» 2009-03-21 00:17:02
C/C++
#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ć.
P-4872
GoldWolf
» 2009-03-21 06:54:59
1. Da się, tu jest rozwiązanie.
2. Również:
C/C++
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.
P-4874
malan
Temat założony przez niniejszego użytkownika
» 2009-03-21 17:31:24
Dziękuje bardzo. Biorę się do roboty ;D.
Pzdr.
P-4904
GoldWolf
» 2009-03-21 17:33:19
Najwyższy czas ;-)
P-4905
« 1 »
  Strona 1 z 1