Newsgroup: it.comp.lang.c++
Titolo: Da int a string

Mi fate vedere come si trasforma un "int" in "string" ?
Ho letto nei messaggi precedenti che andrebbe usato "ostringstream",
ma ho difficolta' ad usarlo (e' solo colpa mia, chiaramente).
Tra l'altro, l'help del C++ Builder 5 non porta neanche un esempio!
Grazie ! :)
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------
#exclude <windows.h>

Ci sono dei messaggi precedenti che ne parlavano. Se non mi ricordo male se
 int i=234;
per avere la stringa si deve fare i+'0', oppure i-'0', ..... non mi ricordo.
Provale entrambe e una delle due funziona sicuro.
Ciao

 ha scritto nel messaggio
news:8jt1ta$ef2$1...@nslave1.tin.it...


 ha scritto nel messaggio
news:8jtaia$m...@dante.italia.com...


Provale entrambe e una delle due funziona sicuro.
Temo tu stia confondendo.
Il metodo che suggerisci e' quello di trasformazione di un valore
intero nel corrispondente simbolo carattere (cioe' 0 in '0', 1 in '1',
ecc...). Non e' quello che vorrei fare. 
Io intendo una trasformazione da intero a stringa, cioe' 234 deve
essere convertito in '234'.
Vorrei, insomma, sapere in che modo costruire in puro C++ una funzione
dal prototipo :
std::string Trasforma( int i ) ;


insomma o usi l'ostrstream, come indicato, o fai sprintf, che č lo stesso.
Grazie per le dritte :)
sprintf la conosco ... mi interessava sapere come realizzare una
sprintf() in puro C++ :)
Grazie ancora...


insomma o usi l'ostrstream, come indicato, o fai sprintf, che č lo stesso.
Sono riuscito a scrivere la seguente funzione, ma come fare in modo
che essa restituisca una stringa ? :
#include <iostream>
#include <string>
#include <strstream>
void IntToStr( int iNumero, std::string& sStr )
{
     char buf[255] ;
     std::ostrstream os( buf, sizeof buf ) ;
     os << iNumero << std::ends ;
     sStr = buf ;
}
int main()
{
    std::string sMiaStr ;
    IntToStr( 532, sMiaStr ) ;
    std::cout << '\"' << sMiaStr << '\"' << std::endl ;
    return 0;


 Tra l'altro, l'help del C++ Builder 5 non porta neanche un esempio!
Eccolo:
#include <iostream>
#include <string>
#include <sstream>
void IntToString( std::string &s, int n )
{
    std::ostringstream oss;
    oss << n;
    s.swap( oss.str() );
}
int main()
{
    int n = 12345;
    std::string s;
    IntToString( s, n );
    std::cout << s << std::endl;
}
EMG

 void IntToStr( int iNumero, std::string& sStr )
Se vuoi che restituisca una std::string non devi fare altro che scrivere
std::string IntToStr( int iNumero, std::string& sStr )
e poi, alla fine
return sStr;
Comunque non penso che in generale convenga restituire la strina per
valore.
EMG

Se vuoi che restituisca una std::string non devi fare altro che scrivere
Grazie EMG ;)
In gamba, come sempre ;)


valore.
Io ho visto funzioni del genere in C++ Builder, che restituiscono
tranquillamente delle AnsiString (che sono classi che dovrebbero
essere costruite sulle string).
Mi chiedevo come si potesse creare la funzione equivalente, che
accetta un intero e restituisce una std::string.


 std::string IntToStr( int iNumero ) ;
Eccolo qui:
#include <iostream>
#include <string>
#include <sstream>
std::string IntToString( int n )
{
    std::ostringstream oss;
    oss << n;
    return oss.str();
}
int main()
{
    int n = 12345;
    std::cout << IntToString( n ) << std::endl;
}
EMG