|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
[c++] Da Stringa a ASCII
il problema è semplice..
devo fare un programma in c++ che data una stringa mi restituisca il codice ascii della stringa inserita... ad esempio inserisco "ciao" e mi restituisce ttt il codice ASCII in fila per ogni lettera... nn so se mi sn fatto capire... |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
per decimale usi atoi(); per esadecimale usi sprintf(hex, "%02x" stringa & 0xff); ciao |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
e se sono lettere??
cioè..se uno immette "ho 2 gatti" mi dovrebbe restituire l'ascii del carattere h + o + spazio + 2 + spazio + g + a + t + t + i tutto attaccato... io ci ho provato ma non so proprio come fare... ![]() |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Apr 2004
Messaggi: 130
|
Codice:
#include <iostream> #include <string> #include <iomanip> int main(void) { std::string esempio = "Ho 2 gatti"; std::cout.fill('0'); for (size_t i = 0; i != esempio.length(); ++i) std::cout << std::hex << std::setw(2) << static_cast<int>(esempio[i]); std::cout << std::endl; } |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Non si deve usare atoi(), perché essa fa una conversione da un numero contenuto in una stringa a un valore numerico (es. "12" -> 12).
Il valore contenuto in un char è già di per sé il codice ASCII del carattere! Codice:
string s = "ho 2 gatti"; for (int i=0; i<s.length(); i++) cout << (int) s.at (i) << " "; cout << endl;
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
mi ero dimenticato di dire che io lavoro con il C++ Builder della Borland e quindi in ambiente visuale...
nn ho mai usato il comando cout e non so se funzioni in visuale...me lo spiegate? |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
Quote:
|
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
non capisco:
std:: cout cout.fill << size_t static_cast end1 scusate, ma sono davvero niubbo in questo linguaggio e non vorrei disturbarvi troppo però se mi aiutate magari raggiungo i vostri livelli...e soprattutto desidererei capire come avete imparato e dove avete accresciuto le vostre conoscenze? ![]() ringrazio ttt... |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
lo so che è sempre difficile aiutare i niubbi xò nn penso sia così lungo da spiegare..
![]() |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Si può fare std::string oppure mettere using namespace std; all'inizio e poi usare semplicemente string. cout è un oggetto di classe ostream, serve per scrivere sullo standard-output. cout.fill è un metodo che imposta il carattere di riempimento quando si usa width() e il numero da scrivere è più piccolo. << è un operatore, di cui è stato fatto l'overload per poter scrivere vari tipi di dati su uno stream. size_t è il tipo di dato che viene normalmente restituito da sizeof(). Vedilo come un tipo "intero". static_cast serve per fare un cast "particolare". I dettagli però non me li ricordo. ![]() endl (non end1!) indica il newline. cout << endl, scrive un newline sullo standard-output.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
quindi cout e end1 nel c++ visuale non mi servono vero?
il problema e come tradurli nel visuale ora.. :P |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
si giusto... ho scritto di getto. Intendo: sprintf (decimale, "%d ", stringa & 0xff); ho fatto copia incolla dal mio code e mi sono impappinato: if(atoi(decimale)<32) strcat (ok, "."); |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
uhm..non ci sto capendo...
![]() potete mettere pure i commenti? grazie mille :P |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E' giusto quello che dice andbin...se la stringa è un vettore di caratteri invece fai così (stessa logica di quello di andbin):
for(int i = 0; i < strlen(s); ++i) cout << (int)s[i] << " "; Goten_ssj, andbin e okay: avete la firma irregolare http://www.hwupgrade.it/forum/regolamento.php ![]() Ultima modifica di cionci : 04-10-2006 alle 18:53. |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
si..ma il cout in visuale come lo traduco???
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Intanto ringrazio okay e andbin per aver modificato la firma...ora manchi solo tu, Goten_ssj
![]() Per avere la stringa da stampare nella tua textbox fai così: ostringstream ost; for(int i = 0; i < strlen(s); ++i) ost << (int)s[i] << " "; E dopo devi immettere nella textbox ost.str(); che appunto ritorna la stringa completa... Ultima modifica di cionci : 05-10-2006 alle 08:02. |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
l'unica cosa che sono riuscito a fare per adesso è quella di tradurre 1 solo carattere e mi viene così
Codice:
char *x; int a; x=Input->Text.c_str(); a=int(x[0]); Output->Text=a; Input = Textbox di input Output = Textbox di output praticamente questo codice inserito 1 qualsiasi carattere nella textbox di input, restituisce la sua sequenza in ascii.. ecco...ora devo farlo per 1 intera stringa... |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
ostringstream ost; for(int i = 0; i < strlen(s); ++i) ost << (int)Input->Text[i] << " "; Output->Text=ost.str(); |
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 352
|
dice:
Undefined symbol 'ostringstream' |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Credo che la prima cosa che debba saper fare un programmatore è non arrendersi alla prima difficoltà...quindi credo che tu debba essere in grado di trovare quale libreria includere da solo
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:15.