Newsgroup: it.comp.lang.c++
Titolo: [Domanda cretina] Convertire un intero in stringa...

Ciao,
come faccio a convertire una intero in una stringa visualizzando sempre due
cifre (per capirsi devo visualizzare le ore e i minuti di un orologio) ?
Grazie.

 
wrote:

Intendi qualcosa del genere... ??
 #include <iostream>
 #include <string>
 #include <sstream>
 int main()
 {
     using namespace std;
     int ore = 10;
     int min = 5; string zeroM = "";
     string zeroO = "";
     if (ore < 10) zeroO = "0";
     if (min < 10) zeroM = "0";
     stringstream sstr;
     sstr << zeroO << ore << ":" << zeroM << min;
  cout << sstr.str() << endl;
   system("PAUSE");	
   return 0;
}
---------------OUTPUT:
10:05
Premere un tasto per continuare...
-----------------------------------------
Ciao, Checco

> Intendi qualcosa del genere... ??
[CUT]
Avevo pensato anch'io di fare un'accrocchio del genere, ma mi domandavo se
fosse già presente qualche funzione C o C++ che svolgesse questo compito
(del resto, la necessità di visualizzare gli zeri non significativi mi
sembra che possa servire in più di un occasione).
Zano


Questo è un altro modo, più elegante, usa i manipolatori degli stream...
 #include <iostream>
 #include <string>
 #include <sstream>
 #include <iomanip>
 int main()
 {
     using namespace std;
     int ore = 8;
     int min = 5;
     stringstream sstr;
     sstr << setfill('0') << setw(2)<< ore << ":" << setw(2) << min;
     cout << sstr.str() << endl;
   system("PAUSE");	
   return 0;
}
----OUTPUT
08:05
Premere un tasto per continuare...
Ciao, Checco.

> Questo è un altro modo, più elegante, usa i manipolatori degli stream...
Io devo fare l'output su una Label posta su una form.
Immaginavo che ci fosse la possibilità di definire un formato differente con
printf o simili.
Zano

 wrote in
news:bjmprr$l6epb$
1...@ID-198647.news.uni-berlin.de
: 

char str[100];
sprintf (str,"%02d",numero)

 printf o simili.
Ma ti serve codice C++ o codice C?
Quello che ottieni dal metodo str() della classe stringstream è un oggetto 
std::string, puoi formattarlo come vuoi con std::cout ed i manipolatori, 
esattamente come con printf...
std::string risposta(sstr.str());
se non ti serve un oggetto string ma ne vuoi uno in c-style usa il metodo 
c_str() della classe string...
char ris[80];
strcpy(ris, risposta.c_str());
Diversamente non capisco cosa ti serve esattamente, non so come aiutarti...
Ciao Checco.

 sprintf (str,"%02d",numero)
Questo codice, pur se semplice e veloce, è OT.
:-))) 
-- 
Luc.

 Questo codice, pur se semplice e veloce, è OT.
Anche se è OT, è proprio quello che cercavo!
Proverò anche ad implementare la versione che utilizza i manipolatori !
Grazie Mille !

 Questo codice, pur se semplice e veloce, č OT.ů
Mi sembra opinabile. Non lo sara' quando non funzionera' piu' su un
compilatore C++.
E delle 3 soluzioni e' "purtroppo" la piu' leggibile.
Saluti.

 
Scusate la domanda, ma il C++ abolisce l'uso di funzioni come printf , 
strtok , strcpy ?
Ok che ci sono le librerie std per usare le stringhe e per l'output, pero' 
non credo che sprintf sia una funzione abolita' dal C++...o si?
Sono abbastanza ignorante in materia.

E delle 3 soluzioni e' "purtroppo" la piu' leggibile.
std::sprintf è presente nello standard, a patto di includere cstdio, 
ergo non vedo perché mai dovrebbe essere ot.
usare i manipolatori cmq, mi sembra altrettanto leggibile:
#include <iostream>
#include <iomanip>
int main()
{
    const int ore = 2;
    std::cout <<std::setfill('0')<<std::setw(2)<< ore <<std::endl;
}
sbirish.

 ha scritto nel messaggio
news:Xns93F39254CDE15gi...@213.140.2.16...

diciamo che per ora la compatibilita' con il C non e' inficiata ... ma se
usi C++ ti conviene subito ad usare le string e le stringstream per queste
cose, perche' internamente potrbbero benissimo apppoggiarsi su funzioni non
C (per ora cmq vanno ad usare le normali funzioni C) e rientreresti nel
linguaggio C++ e non C ...
ciao

 usare i manipolatori cmq, mi sembra altrettanto leggibile:
io preferisco non usarli e usarmi i metodi, saro' masochista :-p no e' che
per adesso mi sto studiando il piu' possibile le basi, cosi da capire cosa
fanno i manipolatori e poi poterli pure scrivere dasolo quando magari non li
trovo in qualche implementazione ...
ciao

usare i manipolatori cmq, mi sembra altrettanto leggibile:
Il codice che hai mostrato non e' proprio equivalente perche'
modifica il modo di lavorare dello stream. I manipolatori
(quasi tutti) modificano lo stato dello stream in modo
permanente e quindi il loro uso non e' cosi' comodo come
lo dipingi.
In ogni caso (anche lasciando da parte il problema della modifica
dello stream) la cosa e non sembra comunque comoda quanto printf...
per farti un esempio io il formato da usare "%02i" potrei averlo
letto da file o averlo ricevuto come parametro...
Andrea

"Andrea Griffini" ha scritto
: >
: >>>> char str[100];
: >>>> sprintf (str,"%02d",numero)
: >>> Questo codice, pur se semplice e veloce, è OT.
:
: In ogni caso (anche lasciando da parte il problema della modifica
: dello stream) la cosa e non sembra comunque comoda quanto printf...
: per farti un esempio io il formato da usare "%02i" potrei averlo
: letto da file o averlo ricevuto come parametro...
:
Ottima idea, cosi` uno puo` fare il parsing della stringa di formato
e, se il numero dei campi coincide, chiamare printf... molto comodo
Massimo

 :-)))
;-p
Ciao,
Nicola