Hy, I'm quite new in the field of C++ but I have the following problem: The adjacent code was made to read, sort and output data from a large .txt file into a new one. Since I don't need all data I want to define that the program is just reading data from headers I define. That means that the program only need to read data from the following two headers: "forces from reactions at point ties:" and "forces from reactions at restrained faces :" I have attached the file for a better understanding. The line where the program is reading those headers is line: "} else if (line.find(':') != string::npos) {" Now I need to define a bool-variable that returns "true" if one of the two headers has been read. If not, proceed reading.... I hope you understand my problem and thank you for your help in advance... Code: #include <vector> #include <string> #include <iostream> #include <algorithm> #include <string.h> #include <stdlib.h> #include <fstream> using namespace std; class myItem { public: myItem(int T, int S, int I, const string& L): Time(T), Section(S), Id(I), Line(L) {} int Time, Section, Id; string Line; bool operator < (const myItem& o) const { if (Section != o.Section) return Section < o.Section; if (Id != o.Id) return Id < o.Id; return Time < o.Time; } }; int main() { string line; string header1 = "FORCES FROM REACTIONS AT POINT TIES:"; string header2 = "FORCES FROM REACTIONS AT RESTRAINED FACES :"; vector <string> Sections, TableHeads; vector <myItem> AllData; int curTime, curSection, curId; // INPUT while (getline(cin,line).good()) { cerr << line << endl; char dummy; if (sscanf(line.c_str()," SOLUTION AT RAMP POINT %*d TIME %d",&curTime) == 1) { // A new ramp point and time, restart sections curSection = -1; } else if (line.find(':') != string::npos) { // A new heading string tablehead; getline(cin,tablehead); curSection++; if (Sections.size() <= curSection) { Sections.push_back(line); TableHeads.push_back(tablehead); } } else if (line.find_first_not_of("- \r\n\t")==string::npos) { // ignore line } else { // data line int curId = line[0] == '*'? (~0u)>>1 : atoi(line.c_str()); AllData.push_back(myItem(curTime,curSection,curId,line)); } } // SORT sort(AllData.begin(), AllData.end()); // OUTPUT std::ofstream output ("//gt//home//h113027//GT26//forces_moments//final1//output.txt"); curSection = -1; curId = -1; for (vector<myItem>::iterator i=AllData.begin(); i!= AllData.end(); i++) { if (i->Section != curSection) { curSection = i->Section; curId = -1; output << Sections[curSection].c_str() << std::endl; } if (i->Id != curId) { curId = i->Id; output << "\nTime " << TableHeads[curSection].c_str() << std::endl; } output << i->Time << std::endl << i->Line.c_str() << std::endl; } output.close(); }