Page 1 of 1

IT - Ajutor in legatura cu C++

Posted: 02 Jul 2013, 12:22
by Y0da1
Salut! Am o problema cu citirea unor valori dintr-un fisier.
Sa zicem ca x.dat este un fisier care contine urmatoarele caractere in baza 16(hexazecimale): \x41\x42\x43
urmatoarea secventa de cod citeste caracterul 0 ca fiind ", caracterul 0 ca fiind \, caracterul 1 -> x, caracterul 2 -> 4:
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
int main(int argc, char **argv)
{
char buf[10];
ifstream g ("x.dat");
g>>std::hex>>buf;
cout<<buf;
g.close();
return 0;
}
Rezultat:
\x41\x42\x43

Daca declar char buf[]="\x41\x42\x43";
pe ecran imi arata: abc
So, ce trebuie sa fac ca sa-mi citeasca din fisier \x41 ca un caracter, nu ca trei caractere??
P.S. Folosesc codeblocks cu mingw

Re: IT - Ajutor in legatura cu C++

Posted: 02 Jul 2013, 22:13
by Jessyy
Eu nu am mai lucrat demult in C# in modul in care ai ales tu citirea datelor nu o sa-ti permita ca "\x41" sa-l vada un singur caracter ...
Dar poti sa faci ca in timpul rularii programului faci conversia ...

Re: IT - Ajutor in legatura cu C++

Posted: 03 Jul 2013, 08:49
by Y0da1
Intr-o carte numita "Totul despre C/C++" scria ca poti face asta folosind nu stiu ce functie, in program.
Adica daca scrii:
printf <nu stiu ce functie> x41; iti arata ''A'' pe ecran... Si ma gandesc: daca exista o astfel de functi la citire/afisare, de ce nu o exista si la citire dintr-un fisier?
Apropo de conversie in timpul rularii; cum ar trebui sa fac asta? Folosind tot o functie de conversie, care e ceea ce caut deci....
Multumesc oricum!