PDA

View Full Version : [c++] unire numeri e caratteri


NA01
11-04-2004, 17:21
dato che devo mettere su html moooolte foto ho pensato di fare un semplice programmino che automatizzasse il tutto.
è praticamente pronto, il problema è che ho milioni di file numerati in sequenza.
del tipo:
ciccio_bello_XXX.jpg dove al posto di XXX ci sono numeri :D
basta un numero++ per aumentare un contatore, ma come inserisco l'int nel nome?

grazie, ciao!

cionci
11-04-2004, 17:36
#include <sstream>
#include <iostream>

using namespace std;

int main()
{
ostringstream s;
s << 199 << " ciao";
cout << s.str();
return 0;
}

NA01
11-04-2004, 17:43
grazie mille!

NA01
11-04-2004, 19:47
ops!
ho notato che continua a aggiungere tutto, come faccio a cancellare quello che contiene?
ho provato a usare .flush() o a assegnare una stringa vuota con stringa_vuota=str();
ma continua a aggiungere sempre a quello preesistente....

ciao!

cionci
11-04-2004, 20:02
s.str("");

;)

NA01
12-04-2004, 12:30
Originariamente inviato da cionci
s.str("");

;)
:D


ops!
ora però i problemi non sono finiti....
devo piazzare quello che metto insieme su
ofstream uscita(nome_creato);
ma ovviamente non posso se questa è una stringa :cry:
ho provato a usare stringa.data(); ma non funzia :( (eppure non ho fatto altro che copiare pagina 676 del manuale di stroustrup :mbe: :wtf:

ciao!:D

cionci
12-04-2004, 17:11
s.str().c_str();

NA01
12-04-2004, 18:24
quello era alla pagina dopo :D
però me lo accetta solo se lo piazzo in una costante.
essendo all'interno di un ciclo non mi posso permettere di usare una costante?

dove sbaglio?

grazie mille

ciao!

NA01
12-04-2004, 18:31
come non detto...
funziona!
se hai tempo mi potresti spiegare perchè?
non ho prprio capito :D


ciao!

cionci
12-04-2004, 18:39
Originariamente inviato da NA01
come non detto...
funziona!
se hai tempo mi potresti spiegare perchè?
non ho prprio capito :D


ciao!
string ha un metodo chiamato c_str() che ritorna una stringa costante nel formato standard del C (char *)...

s.str() ritorna una string quindi applicando il metodo alla string ritornata:

string s1 = s.str();
char *s2 = new char[s1.size()+1];
strcpy(s2, s1.c_str());

Oppure:

char *s2 = new char[s.str().size()+1];
strcpy(s2, s.str().c_str());