Is there a particular function in c++ that can return the line number of a particular string i want to find?
ifstream fileInput;
int offset;
string line;
char* search = "a"; // test variable to search in file
// open file to search
fileInput.open(cfilename.c_str());
if(fileInput.is_open()) {
while(!fileInput.eof()) {
getline(fileInput, line);
if ((offset = line.find(search, 0)) != string::npos) {
cout << "found: " << search << endl;
}
}
fileInput.close();
}
else cout << "Unable to open file.";
I want to add some codes at:
cout << "found: " << search << endl;
That will return the line number followed by the string that was searched.
Just use a counter variable to keep track of the current line number. Each time you call
getlineyou… read a line… so just increment the variable after that.Also…
while(!fileInput.eof())should be
while(getline(fileInput, line))If an error occurs while reading
eofwill not be set, so you have an infinite loop.std::getlinereturns a stream (the stream you passed it) which can be implicitly converted to abool, which tells you if you can continue to read, not only if you are at the end of the file.If
eofis set you will still exit the loop, but you will also exit if, for example,badis set, someone deletes the file while you are reading it, etc.