1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

bool variable for data export

Discussion in 'C' started by alpenkoenig, Nov 26, 2009.

  1. alpenkoenig

    alpenkoenig New Member

    Joined:
    Nov 26, 2009
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    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(); 
    }
    
     

    Attached Files:

Share This Page