?
Matthi70 schrieb:
Aus einer Datei lese ich folgenden Text: Die ersten 2 Zeilen sollen ignoriert werden. Ich möchte ab der 3.Zeile , die Daten zwischen den Zeichen '|' abspeichern als Variable. Wobei auch die wo nichts zwischen den Trennzeichen
Mein Versuch es zu programmieren zeige ich erst gar nicht, da ich gerne wissen möchte wie man es wirklich macht und meiner nicht fertig ist!
Ein wenig mehr von Deiner Anstrengung hätten wir ja schon gerne gesehen.
Anyway...
Hier mal meine Version:
#include <array>
#include <iomanip>
#include <iostream>
#include <limits>
#include <string>
#include <vector>
typedef std::array<std::string, 33> string_tuple;
std::ostream& operator<<(std::ostream& os, const string_tuple& st){
string_tuple::size_type i=0;
for(; i<st.size()-1; ++i)
os << '\"' << st[i] << "\", ";
os << '\"' << st[i] << '\"';
return os;
}
std::istream& operator>>(std::istream& is, string_tuple& st){
for(string_tuple::size_type i=0; i<st.size(); ++i)
if(!std::getline(is>>std::ws, st[i], '|'))
break;
return is;
}
int main(){
using namespace std;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.ignore(numeric_limits<streamsize>::max(), '\n');
vector<string_tuple> vec;
for(string_tuple st; cin >> st;){
vec.push_back(st);
}
for(auto st: vec)
cout << st << '\n';
}
Für mich stellt die Überladung von operator>>() und operator<<() den Königsweg dar.