|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Sep 2007
Messaggi: 135
|
[C++] String to Numero
Salve a tutti,
mi vedo costretto per motivi di velocità di esecuzione, a tradurre un mio codice da matlab a c++. Essendo parecchio niubbo in questo linguaggio mi trovo impossibilitato a dichiarare come "numeri" delle stringhe ottenute per lettura da un file di testo attraverso questo codice: Codice:
char anno[5]; char mese[3]; char giorno[3]; char gmt[4]; char deg_acc[9]; char ra_acc[9]; char long_deg[10]; char long_mm[9]; char long_ss[9]; char lat_deg[9]; char lat_mm[9]; char lat_ss[9]; char altitude[11]; char ora[5]; char minuti[5]; char secondi[7]; char ra_r[12]; char dec_r[11]; strncpy (anno,&dati[7],4); anno[4]='\0'; strncpy (mese,&dati[20],3); mese[2]='\0'; strncpy (giorno,&dati[31],3); giorno[2]='\0'; strncpy (gmt,&dati[41],3); gmt[3]='\0'; strncpy (deg_acc,&dati[48],8); deg_acc[8]='\0'; strncpy (ra_acc,&dati[60],8); ra_acc[8]='\0'; strncpy (long_deg,&dati[71],10); long_deg[9]='\0'; strncpy (long_mm,&dati[83],9); long_mm[8]='\0'; strncpy (long_ss,&dati[95],9); long_ss[8]='\0'; strncpy (lat_deg,&dati[107],9); lat_deg[8]='\0'; strncpy (lat_mm,&dati[119],9); lat_mm[8]='\0'; strncpy (lat_ss,&dati[131],9); lat_ss[8]='\0'; strncpy (altitude,&dati[142],11); altitude[10]='\0'; strncpy (ora,&dati[160],4); ora[4]='\0'; strncpy (minuti,&dati[172],4); minuti[4]='\0'; strncpy (secondi,&dati[183],6); secondi[5]='\0'; strncpy (ra_r,&dati[191],12); ra_r[11]='\0'; strncpy (dec_r,&dati[205],11); dec_r[10]='\0'; Ho provato tutte le soluzioni proposte dal manuale che posseggo ma niente da fare: errori in compilazione. Non so più dove sbattere la testa. Vi prego aiutatemi. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Un possibile convertitore è:
Codice:
std::stringstream iss(stringValue); int output; iss >> std::dec >> output; E visto che parli di C++ usa string invece degli array di char! |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
infatti di default vengono saltati automaticamente da ogni versione dell'operatore >> tranne quella che legge un char.
inoltre credo ci sia un typo nel codice di tomminno: dovrebbe essere "istringstream" anziché "stringstream". infine std::dec non é necessario perché di default é giá impostata la base 10. questa é la mia versione del convertitore (si dá per scontato l'uso globale del namespace std): Codice:
string str = ...; istringstream iss(str); int n; iss >> n; |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Va bene anche stringstream senza la i. E' come ifstream o fstream
![]() |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Sep 2007
Messaggi: 135
|
Vi ringrazio per le risposte: stavo provando con
Codice:
int mese; mese = atoi(str_mese); int gmt; gmt = atoi(str_gmt); double dec_acc; dec_acc = atof(str_dec_acc); |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:19.