Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   bool variable for data export (http://www.go4expert.com/forums/bool-variable-data-export-t20207/)

alpenkoenig 26Nov2009 18:56

bool variable for data export
 
1 Attachment(s)
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();
}



All times are GMT +5.5. The time now is 04:37.