alpenkönig
Grünschnabel
Hallo,
Bin leider noch ein Anfänger auf diesem Gebiet
Ich habe einen Code der Daten von einem .txt file ausliest, sortiert und dann in ein neues .txt file schreibt.
Da ich nicht alle Daten brauche muss ich eine Bool-Variable definieren, damit nur Daten von bestimmten Kapiteln gelesen werden.
In der Zeile "else if (line.find(':') != string::npos)" sucht das Program nach dem ":" Diese ":" treten immer nach Überschriften wie "forces from reactions at point ties:" auf. Wenn die Überschrift "true" ist, soll das Program weiterlesen, ansonsten überspringen. Jetzt weiss ich nicht wie ich das implementieren soll
Wäre froh, wenn du mir da helfen könntest. Vielen Dank
Bin leider noch ein Anfänger auf diesem Gebiet
Ich habe einen Code der Daten von einem .txt file ausliest, sortiert und dann in ein neues .txt file schreibt.
Da ich nicht alle Daten brauche muss ich eine Bool-Variable definieren, damit nur Daten von bestimmten Kapiteln gelesen werden.
In der Zeile "else if (line.find(':') != string::npos)" sucht das Program nach dem ":" Diese ":" treten immer nach Überschriften wie "forces from reactions at point ties:" auf. Wenn die Überschrift "true" ist, soll das Program weiterlesen, ansonsten überspringen. Jetzt weiss ich nicht wie ich das implementieren soll
Wäre froh, wenn du mir da helfen könntest. Vielen Dank
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;
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();
}