Newsgroup: it.comp.lang.c++
Titolo: stringhe c++

Ciao a tutti, avrei una domanda semplice semplice (o forse stupida 
stupida): come faccio a concatenare a una stringa il valore di una 
variabile? Insomma come faccio il cast da un intero (ad esempio ad una 
stringa) a una stringa?
Grazie in anticipo.
Matteo

itoa .... contenuta nella libreria stdlib.h
consulta l'help per maggiori informazioni

 stringa?
 
http://groups.google.com/groups?th=16e400f0fab27608
 
http://groups.google.com/groups?th=4dac471947e7958b

 
itoa() non è una funzione standard.
MM


me ne ero accorto, grazie a tutti.
Matteo

ho poca conoscenza del c++ "moderno" (quello della libreria standard
per intenderci)... mi interesso di programmazione videoludica e quindi
programmo soprattutto in c "con le classi" (anche se i vector e le
list cominciano a piacermi, soprattutto con quei bei algoritmini già
belli pronti e ottimizzati)...
ma possibile che non esista un metodo semplice per castare un intero
in una stringa? capisco che forse filosoficamente non è molto
corretto, ma un semplice
string s = string(12);
non sarebbe molto semplice da usare?
o anche, viceversa, una funzione atoi (che ancora non ho capito se fa
parte del c++ oppure no) che fa il contrario?
int i = itoa("12");
solo che mentre la seconda esiste, mi sa che il cast diretto da intero
a std::string non esiste, vero? perché no?
-- 
]\/[ad]\/[age (
www.madmagelab.cjb.net
)
"Un Maestro insegue semplicemente la sua visione di Eccellenza in
qualunque cosa sta facendo e lascia agli altri decidere se sta 
lavorando o giocando. A lui sembra sempre di fare entrambe." - Anonimo

 lavorando o giocando. A lui sembra sempre di fare entrambe." - Anonimo
--
Luigi Mantellini
Per il pessimista il bicchiere è mezzo vuoto,
per l'ottimista è mezzo pieno,
per un ingegnere è semplicemente sovradimensionato rispetto l'uso.

 che tornano utili...)
Mi fa estremamente piacere che c'è qualcuno che ha gli stessi problemi 
con le stringhe... anche se permetto di dire che toString non è una 
delle poche cose di Java che tornano utili, ce ne sono molte e in questi 
momenti di programmazione c++ le rimpiango tutte ;-P
CIAO
Matteo

 momenti di programmazione c++ le rimpiango tutte ;-P
Quali? Come vedi, il C++ e' molto complesso, ma anche molto potente. 
Sicuramente piu' potente di Java, che pero' apprezzo per la sua eleganza. 
Ovviamente tutto questo e' solo una mia opinione. ;-)
Ciao
-- 
Andrea Bergia - studente
Linux Registred User #281550

 Ovviamente tutto questo e' solo una mia opinione. ;-)
E' per questo che gradisco più funzioni toQuelloCheVuoi piuttosto che
operatori di conversioni, che magari mi entrano in gioco quando non
previsto.


 string s = string(12);
Potrebbe interessarti il lexical_cast [1] presente nelle librerie boost [2].
string s = lexical_cast<std:string> i;
Ciao.
[1] 
http://www.boost.org/libs/conversion/lexical_cast.htm
[2] 
http://www.boost.org/

Ovviamente tutto questo e' solo una mia opinione. ;-)
hm... java elegante? io invece ODIO la funzione .equals() è veramente
brutta!!! ma perché non hanno permesso l'overloading degli
operatori...
if (pippo.equals(topolino)) {}
è molto più brutto (e meno leggibile) di
if (pippo == topolino) {}
o no?
riguardo al cast... non è che ho ancora capito come sia meglio farlo
in c++, visto che si può fare con
a = (string) b;
a = string(b);
a = static_cast<string>(b);
e così via...
poi c'è java che semplifica la cosa con toString()... ma questa
soluzione non mi piace... se non altro perché si tratta di una
funzione e non di un cast vero e proprio


 funzione e non di un cast vero e proprio
Il codice di toString e' una funzione no? ;-)


Il codice di toString e' una funzione no? ;-)
eh? non ho capito! :-?!?


 eh? non ho capito! :-?!?
toString e' una funzione come tutte le altre. Anche l'overload di un 
operatore per fare un casting in C++ e' una funzione. Quindi...


M.Corno wrote:

Puoi aprire un canale su una stringa e scriversi sopra come fosse cout 
(vedi <sstream>)
esempio:
string s;
istringstream ss(s);
ss << 1234;
-- 
Mauro Mazzieri
Pensare globalmente
agire localmente

Beh, se vuoi te la puoi scrivere, non ci vuole molto, anche se magari non è
portabile.
Io ad es. mi sono scritto e uso questa che supporta anche i numeri negativi:
#include <iostream>
#include <string>
string IntToStr (int num) {
 int diff = 0, n = 0;
 char c = ' ', segno = ' ';
 string tot = "";
 if (num < 0) {
  segno = '-';
  num = -num;
 };
 n = num;
 while (n > 0) {
  n = num / 10;
  diff = num - n * 10;
  c = diff + 48;
  tot = c + tot;
  num = n;
 };
 return (segno == '-' ) ? '-' + tot : tot;
};
int main () {
 std::cout << IntToStr (-12) + IntToStr(34) << std::endl;
 return 0;
}
Stampa
-1234
Ciao
--
Luigi

 #include <string>
manca un using namespace std; o perlomeno un using std::string visto che 
usi string come fosse globale.
Io mi sono "divertito" a farne una un po' piu' semplice (per chi conosce 
la STL):
std::string int2str (int n)
{
	using namespace std;
         string result = (n > 0)? "" : "-";
	n = (n > 0)? n: -n;
         stack <int> cifre;
         while (n > 0) {
                 cifre.push (n % 10);
                 n /= 10;
         }
         while (! cifre.empty()) {
                 result += (char)cifre.top() + '0';
                 cifre.pop();
         }
         return result;


 la STL):
Eh eh, non direi piů semplice, visto che devi conoscere la SL :)
Ciao
--
Luigi

 std::string int2str (int n)
[snip]
	Hi hi, una ancora piu' semplice tratta dal sito dello Stroustrup:
std::string dtos( double d )
{
	std::stringstream ss;
	ss << d;
	return ss.str();
}
_dave_

 }
E' vero, e' piu' semplice. Pero' la mia e' piu' istruttiva ;-)


 Eh eh, non direi piů semplice, visto che devi conoscere la SL :)
In teoria chi conosce il C++ *dovrebbe* conoscere la STL no? E poi e' 
talmente comoda e potente che varrebbe *quasi* la pena imparare il C++ 
solo per averla a disposizione... ;-)


 }
Anche io ci avevo pensato, leggendo gli stream sul libro di Lippman, ma il
gpp non trova nessun file <sstream> :(
Mi sa che il gpp 2.95 è troppo vecchio.
Ciao
--
Luigi

 il gpp non trova nessun file <sstream> :(
	Prova col g++3.
_dave_


...che e' arrivato gia' alla versione 3.2 , disponibile anche in
versione MinGW.
Ciao,
Nicola