017
31.05.2004, 13:14 Uhr
(un)wissender
Niveauwart
|
Ich finde deinen Code sehr verwirrend, darum habe ich hier mal eine alternative Variante aufgeschrieben (Ohne viel Sicherheitsabfragen, dass ist deine Sache). Wen du testen willst: Als "test.txt" kopierst du einfach die Daten, die du hier gepostet hast.
C++: |
#include <algorithm> #include <iostream> #include <fstream> #include <sstream> #include <string>
const int ROWS = 10; const int COLS = 15;
bool loadPopulation(int twoDMatrix[][COLS], const char * fileName);
int main() { int twoDMatrix[ROWS][COLS]; if(!loadPopulation(twoDMatrix, "test.txt")) { std::cout << "Error" << std::endl; return 0; } for(int i = 0; i < ROWS; ++i) { for(int j = 0; j < COLS; ++j) { std::cout << twoDMatrix[i][j] << " "; } std::cout << std::endl; } return 0; }
bool loadPopulation(int twoDMatrix[][COLS], const char * fileName) { std::ifstream in(fileName); if(!in) return false; std::string line; std::stringstream formater; for(int i = 0; i < ROWS; ++i) { //Bis newline lesen getline(in, line); //Uns interessiert nur alles nach dem =-Zeichen line = line.substr(line.find('=') + 1,line.size()); //Komma durch Leerzeichen ersetzen, damit Formatierung funzt std::replace(line.begin(), line.end(), ',', ' '); //line formatieren formater << line; for(int j = 0; j < COLS; ++j) { //Die formatierte Eingabe in der Matrix speichern formater >> twoDMatrix[i][j]; } //EOF löschen formater.clear(); //Stream leeren formater.str(""); } return true; }
|
-- Wer früher stirbt ist länger tot. |