Je voudrais poser des questions sur mon problème, j'ai essayé de lire Getline et EOF Question, mais n'a pas aidé.getline et test EOF à la fois
Problème est je ne sais pas où pourrait être erreur ici: Y at-il un problème avec la fonction utilisée (getline ou vérification EOF)?
S'il n'y a pas de texte dans le fichier text.txt, il est indiqué que quelque chose a été trouvé. Mais je n'ai aucune idée pourquoi ou où j'ai fait une erreur ...
Ce que je veux est: Recherche de chaîne et s'il n'y a pas de texte dans le fichier txt je veux dire EOF ou quelque chose. Il dit encore - même si le fichier est vide - chaîne que je cherchais a été trouvé en ligne une position un - par exemple
Je Puting il code:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int openFile(void);
int closeFile(void);
int getTime(void);
int findTime();
int findDate();
int stringFind(string);
bool getOneLine(void);
string what;
bool ifound = false;
string foundstring;
string filename ;
fstream inputfile;
string sentence ;
size_t found ;
string foundTime ;
string foundDate ;
bool timeIsHere = false;
bool dateIsHere = false;
int iterTime = 0;
int iterDate = 0;
int line = 0;
int main (void){
sentence.clear();
cout << " Enter the file name:" << endl;
openFile();
while (getOneLine() != false) {
stringFind("Time");
}
cout << "END OF PROGRAM" << endl;
system("PAUSE");
///getTime();
closeFile();
system("PAUSE");
}
int closeFile(void) {
inputfile.close();
cout << " File: " << filename << " - was closed...";
return 0;
}
int openFile(void) {
cout << " Insert file name in program directory or full path to desired file you want to edit:"<<endl;
cout << " Do not use path with a space in directory address or filename ! " << endl;
cout<<" ";
getline(cin, filename);
inputfile.open(filename, ios::in);
cout <<" file_state: " << inputfile.fail();
if (inputfile.fail() == 1) {
cout << " - Cannot open your file" << endl;
}
else cout << " - File was openned sucesfully"<< endl;
return 0;
}
int stringFind(string what) {
cout << " I am looking for:" << what << endl;
found = what.find(sentence);
if (found == string::npos) {
cout << " I could not find this string " << endl;
}
else if(found != string::npos){
cout << " substring was found in line: " << line + 1 << " position: " << found + 1 << endl << endl;
ifound = true;
foundstring = sentence;
}
return 0;
}
bool getOneLine(void) {
if (inputfile.eof()) {
cout << "END OF FILE" << endl << endl;
return false;
}
else{
getline(inputfile, sentence);
cout << "next sentence is: "<< sentence << endl;
return true;
}
}
Je suis novice et je ne un à demander - personnellement. J'ai essayé d'éditer Tandis que le cycle et les SI pour m'assurer que je n'ai pas fait une erreur sérieuse mais je n'ai aucune idée.
Je l'ai essayé avec par exemple sample.txt et ce fichier était vide.
Cela peut avoir des informations utiles: https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong – Galik