View Single Post
Old 01-08-2008, 22:08   #2
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da demonbl@ck Guarda i messaggi
[...] 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).
71104 è offline   Rispondi citando il messaggio o parte di esso