2014-04-23 5 views
0

Je crée un programme qui lit un ensemble de noms et de nombres à partir d'un fichier, exprime les nombres comme un ratio, puis les affiche sur le terminal. Je voudrais savoir comment je pourrais rediriger la sortie de mes fonctions vers un fichier séparé. J'ai un fichier de sortie prêt, mais je ne sais pas comment rediriger les sorties de mes fonctions.Écrire la sortie de la fonction dans un fichier texte?

Je n'ai pas inclus les fonctions ici, qui fonctionnent bien - juste les appels.

int main(){ 
ifstream input; 
ofstream output; 
string inputname, outputname, name; 
int num1, num2; 
cout<<"Input file?\n"; 
cin>>inputname; 
cout<<"Output file?\n"; 
inFile.open(inputname.c_str()); 
cin>>outputfile; 
outFile.open(outputname.c_str()); 

while(!input.eof()&&!output.eof()){ 
    input>>name>>num1>>num2; 
    lists (name); 
    value (num1, num2); 
} 

input.close() 
output.close() 

return 0; 
} 
+1

Votre code ne devrait même pas compiler puisque vous utilisez une variable non définie (pour autant que ce que vous avez posté): 'outputfile'. – ooga

+1

La vérification de output.eof() me semble étrange. – user2672165

+0

Autres variables non définies: 'inFile',' outFile'. – ooga

Répondre

5

Jetez un oeil à Input/Output with files

Exemple:

ofstream myfile; 
myfile.open ("example.txt"); 
myfile << "Writing this to a file.\n"; 
myfile.close(); 

Comme vous le voyez, il est très semblable à la façon dont vous obtenez les données de fileA.

0

Vous avez plusieurs variables indéfinies (Testez toujours votre programme avant de poster!). Et vous ne vérifiez pas correctement le fichier d'entrée. Vous devez tester eof juste après une opération de lecture pour voir si elle a réussi.

int main(){ 

    cout << "Input file?\n"; 
    string inputname; 
    cin >> inputname; 
    ifstream input(inputname.c_str()); 
    if (!input) return 1; // handle error however you wish 

    cout << "Output file?\n"; 
    string outputname; 
    cin >> outputname; 
    ofstream output(outputname.c_str()); 
    if (!output) return 2; 

    while (1) { 
    string name; 
    int num1, num2; 
    input >> name >> num1 >> num2; 
    if (!input) break; 
    lists(name); 
    value(num1, num2); 
    } 

    return 0; 
} 
Questions connexes