Quote:
Originariamente inviato da demonbl@ck
[...] Mi spiego meglio:
Codice:
string dst,name; int i;
cout << "Quanti file devo creare?" << endl;
cin >> N;
cout << "Inserisci il percorso in cui salvarli" << endl;
cin >> dst;
for (i=0; i<=N; i++)
{
--altre istruzioni del for--
name = dst + i + "." + rand()%10 + rand()%10 + rand()%10;
--altre istruzioni del for--
}
Quell'assegnamento mi risulta in una grossa nuvola di vapore, mentre in Pascal potevo tranquillamente farlo e la stringa creata era ad esempio
c:\test\255.671
|
devi usare uno stringstream; prova così:
Codice:
for (int i = 0; i < N; i++)
{
string dst = "C:\\test\\";
ostringstream oss;
oss << dst << i << "." << (rand() % 10 + rand() % 10 + rand() % 10);
string name = oss.str();
}
Quote:
Inoltre, come faccio a scrivere una riga in un file ?
|
classe ofstream (sta per "Output File Stream"); qui il reference:
http://www.cplusplus.com/reference/iostream/ofstream/
Quote:
il file lo apro con
Codice:
FILE *stream = fopen("c:\\programdata.txt","w");
e posso aggiungere righe con
Codice:
fprintf(stream,"%d",variabileinteraacaso);
o con gli altri identificatori della printf.
|
ARGH, non usare la libreria di I/O del C in C++
Quote:
Il problema arriva quando tento di fare questo:
Codice:
frpintf(stream,"%s",variabilestringaacaso);
che mi restituisce un bel
Codice:
30 D:\Documents and Settings\Nik\Documenti\C++\TUHDSS.cpp [Warning] cannot pass objects of non-POD type `struct std::string' through `...'; call will abort at runtime
|
il warning ti dice che secondo il format string quel parametro doveva essere un puntatore a char, non un oggetto std::string; e ovviamente ha ragione. per ottenere il puntatore al buffer di caratteri contenuto in una std::string devi usare il metodo c_str:
http://www.cplusplus.com/reference/s...ing/c_str.html
ma come ti ho già spiegato, in C++ usa la libreria di I/O delle STL, che è anche più facile da usare (non ci sono format string).