#include<iostream>
#include<fstream>
#include<cstdlib>
#include<string>
using namespace std;
**int main()
{
double write();
double read();
string choice;
while(1)
{
cout<<"Enter read to read a file and write to write a file.\n";
cin>>choice;
if (choice == "read")
cout<< read();
if (choice == "write")
cout<< write();
}
}
double read()
{
const int size = 60;
ifstream inFile;
char filename[size];
cout<<"Enter the name of the file you want to read \n";
cin.getline(filename, size);
inFile.open(filename);**
if(!inFile.is_open())
{
cout<<"could not open "<<filename<<endl<<"program terminating";
exit(EXIT_FAILURE);
}
double value;
double sum = 0.0;
int count = 0;
inFile >> value;
while(inFile.good())
{
cout<<value<<"\n";
++count;
sum += value;
inFile >> value;
}
if (inFile.eof())
cout<<"End of file reached. \n";
else if (inFile.fail())
cout<<"Input Terminated by data mismatch.\n";
else
cout<<"input terminated for unknown reason";
if (count == 0)
cout<<"no data processed";
else
{
cout<<"Items read: "<<count<<endl;
cout<<"Sum: "<<sum<<endl;
cout<<"Average: "<<sum/count << endl;
}
inFile.close();
return 0;
}
double write()
{
char type[81];
char filename[81];
cout<<"this program is more or less pointless, any text edtor on earth is better than this for writing"<<endl;
cout<<"files; However This is the first step in learning how to create my file tranfer program."<<endl;
cout<<"Enter the name of a file you want to create.\n";
cin>>filename;
ofstream outFile;
outFile.open(filename);
outFile<<fixed;
outFile.precision(2);
outFile.setf(ios_base::showpoint);
while(!cin.fail()){
cin.getline(type,81);
outFile<<type<<endl;
}
outFile.close();
}
Le problème semble être que lorsque je tape "read" le programme fait ce qu'il est censé faire jusqu'à ce qu'il arrive à cin >> filename; à quel point je pense qu'il attribue la valeur de choix au nom de fichier parce que le programme saute à if (! inFile.is_open()) {après que je tape dans "read". (la fonction d'écriture de mon programme fonctionne très biencomment résoudre un conflit de données entre string et inFile.open
Quelqu'un pourrait me dire comment résoudre ce problème ou d'une autre manière pour que l'ordinateur décide de la météo à choisir parmi les fonctions lire ou écrire en fonction de la saisie de texte
Je suis nouveau en C++ donc j'apprécierais que la réponse soit simple , grâce
PS I, de m sur ubuntu si cela fait une différence
Ce code inoffensif blesse les yeux. Je ne vais même pas le regarder. – sbi
Il n'y a pas de fichier 'cin >>. Quel est également le problème car si vous l'aviez utilisé, vous n'auriez pas eu de problème (à moins que votre nom de fichier ne contienne un espace). –