PDA

View Full Version : [c++]parametrizzare un file di testo


zetaenzo
10-06-2006, 17:24
ciao a tutti,
sapreste dirmi come si fa a passare un file di testo il cui nome è preso in input? :confused:
Mi spiego meglio: dovrei utilizzare ifstream per la lettura da un file,e per aprirlo dovrei scrivere ifstream.open("nomeFile.txt"); . Il nome del file si può passare come parametro?
Aiutatemi per piacere :help:

andbin
10-06-2006, 18:05
ciao a tutti,
sapreste dirmi come si fa a passare un file di testo il cui nome è preso in input? :confused:
Mi spiego meglio: dovrei utilizzare ifstream per la lettura da un file,e per aprirlo dovrei scrivere ifstream.open("nomeFile.txt"); . Il nome del file si può passare come parametro?Beh, sì. Puoi usare gli argomenti passati sulla linea di comando usando i parametri argc/argv del main() oppure chiedere in input in modo "interattivo", durante l'esecuzione, il nome del file.

zetaenzo
11-06-2006, 10:51
Ed è quello che vorrei fare: chiedere in input il nome del file. Però quando lo memorizzo in una variabile, come faccio ad aprirlo?
Se ci metto le virgolette non funziona, e neanche se non le metto... :muro:

andbin
11-06-2006, 11:08
#include <iostream>
#include <fstream>

using namespace std;

int main (int argc, char *argv[])
{
char filename[100];

cout << "Inserisci il nome del file: ";
cin >> filename;

ifstream inf;

inf.open (filename);

/* .... */

inf.close();

return 0;
}

71104
11-06-2006, 12:35
occhio al buffer overflow però eh! :D
quello di andbin era solo un esempio ;)

andbin
11-06-2006, 13:52
Per evitare i buffer overflow (e fare contento 71104 ;) ) si può fare:
...
char filename[100];

cout << "Inserisci il nome del file: ";
cin.width (sizeof (filename));
cin >> filename;
...oppure:
...
string filename;

cout << "Inserisci il nome del file: ";
cin >> filename;

ifstream inf;

inf.open (filename.c_str());
...

zetaenzo
11-06-2006, 14:46
ok grazie mille, mi siete stati molto d'aiuto!!
Ciao e grazie ancora! ;)