Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Esiste una funzione che converte solo i caratteri esadecimali in una stringa?
Forum - C/C++ - Esiste una funzione che converte solo i caratteri esadecimali in una stringa?

Avatar
popp109 (Normal User)
Rookie


Messaggi: 27
Iscritto: 27/11/2010

Segnala al moderatore
Postato alle 14:54
Sabato, 19/05/2012
Salve ragazzi spero possiate aiutarmi.

Se scrivo questo codice il compilatore assegna a pippo la stringa convertendo \x0061 con 'a'
Codice sorgente - presumibilmente C/C++

  1. string pippo = "Ci\x0061o";
  2.   cout << "risultato : " << pippo;           //  risultato : Ciao



ma se  leggo da un file il testo "Ci\x0061o", giustamente me lo interpetra come stringa.
A me serve la stessa cosa che fa il compilatore quando controlla la prima riga dell'esempio e cioè darmi la stringa definitiva convertendo  i caratteri \xXXXX o \uXXXX nel carattere corrispondente.

Il compilatore che utilizzo è GCC (windows,linux).

grazie.


L'anno 1968 e' bastata la potenza di due Commodore-64 per lanciare con successo una nave spaziale sulla Luna.Il miglior processore di oggi serve a far girare  windows
PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 15:26
Sabato, 19/05/2012
Ti leggi un carattere per volta, se incontri una '\' controlli se dopo c'è una 'x' e quattro numeri,  in caso affermativo converti i numeri nel relativo carattere, altrimenti salvi la '\' e continui.

Ciao.


PM Quote
Avatar
osharko (Normal User)
Pro


Messaggi: 124
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 16:19
Domenica, 20/05/2012
ma se magari salvassi ciò che leggi prima in una variabile? così da ritrovarti nella stessa condizione di quando lo mandi in output dalla stringa


Bha!!!
PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 23:13
Domenica, 20/05/2012
Se legge da un file di testo tiene tutti i caratteri "\x0061", penso che nel suo caso la conversione la fa il compilatore.


PM Quote
Avatar
osharko (Normal User)
Pro


Messaggi: 124
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 13:10
Lunedì, 21/05/2012
mmm non è detto..
In c++ la sequenza per l'esadecimale è 0x***
se dovesse trovare \x0061 potrebbe non riconoscerlo come carattere, o peggio ancora potrebbe trasformarlo in 'a*', dove * è un dei primi simboli ascii strani (se i numeri che precedono il carattere espresso in esadecimale è diverso da 0), altrimenti se fosse proprio 0 potrebbe dare errori strani inquanto 00 fa riferimento a NULL, e molti compilatori non permettono il suo display

Ultima modifica effettuata da osharko il 21/05/2012 alle 13:14


Bha!!!
PM Quote
Avatar
popp109 (Normal User)
Rookie


Messaggi: 27
Iscritto: 27/11/2010

Segnala al moderatore
Postato alle 2:07
Giovedì, 24/05/2012
Testo quotato

Postato originariamente da ale.gatti96:

Ti leggi un carattere per volta, se incontri una '\' controlli se dopo c'è una 'x' e quattro numeri,  in caso affermativo converti i numeri nel relativo carattere, altrimenti salvi la '\' e continui.

Ciao.



Ho risolto in questo modo grazie.


L'anno 1968 e' bastata la potenza di due Commodore-64 per lanciare con successo una nave spaziale sulla Luna.Il miglior processore di oggi serve a far girare  windows
PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 13:48
Giovedì, 24/05/2012
Testo quotato

Postato originariamente da popp109:
Ho risolto in questo modo grazie.



Prego.


PM Quote