Jedes n-te Element eines vektors einlesen
-
Hallo!
Ich habe ein Problem beim Einlesen eines Vektors und hoffe auf eure Hilfe.
Ich habe 100 Werte der Form123
123
456und möchte diese gerne spaltenweise in einem Vektor haben. Bisher habe ich mit getline in einen Vektor eingelesen und versuche, diese Werte nun in eine Reihenfolge zu bringen, als hätte ich spaltenweise eingelesen. Wie funktioniert das? Ich komme einfach nicht weiter. Kann man vielleicht einfach schon spaltenweise einlesen?
Was ich bisher gemacht habe (wobei das letzte wahrscheinlich falsch ist mit dem Iterator):
int main () { vector <int> proctimes; ifstream infile1 ("C:/Users/ich/Documents/Uni/C++/Taillard20_5.txt"); if(!infile1.is_open()){ cerr << "Fehler beim Oeffnen der Datei.\n"; return -1; } for(int i=0; i<3; ++i) infile1.ignore(numeric_limits<streamsize>::max(), '\n'); /*if (infile1.is_open()) cout << "Datei wurde geoeffnet" <<endl << endl; else cout << "Fehler" <<endl<<endl;*/ string line1; while ( getline (infile1,line1) ) { stringstream s (line1); int tmp; while (s>>tmp) { proctimes.push_back(tmp); } } infile1.clear(); // Fehlerstatus auf 0 setzen infile1.close(); // File schließen for (int i=0; i<proctimes.size(); i++) { cout << proctimes [i] << " "; } vector <int> neu; int nbrjobs=100; int nbrmach =5; for (int i=0; i<nbrjobs; i++) { copy(proctimes.begin()+((i-1)*nbrmach), proctimes.begin()+((i-1)*nbrmach)+i*+nbrjobs, back_inserter(neu));Danke schonmal im Voraus!
-
Wäre es nicht geschickter, die Werte gleich in richtiger Form einzulesen?
Ungetestet:getline(quelle, first_line); size_t num_cols = first_line.length(); vector<string> result(num_cols); push_back_values(result, first_line); for (string line; getline(quelle, line); ) { if (line.size() != num_cols) throw num_colums_not_constant_exception(); push_back_values(result, line); } // ... void push_back_values(vector<string> &result, const string &line) { for(size_t i = 0; i < line.size(); ++i) result[i].push_back(line[i]); }Nach dem gleichen Muster kannst du natürlich auch bereits eingelesene Daten rotieren, falls dies bei dir passender sein sollte.