2017-04-04 3 views
-2

Also habe ich diesen Code, der eine bestimmte Datei liest, die die Werte 22 und 14 bzw. in der gleichen Zeile hat.Lesen von Ganzzahlen aus Datei und Initialisieren eines multidimensionalen Arrays

int main() 
{ 
    int rows = 0; 
    int column = 0; 

    string line; 
    ifstream file("Path To File"); 
    if(file.is_open()){ 
      getline(file, line); 
      cout << line << endl; 
     file.close(); 
    } 
    else{ 
     cout << "File cannot be read." << endl; 
     cin.get(); 
     return 0; 
    } 
} 

Wie kann ich ein mehrdimensionales Array erstellen, das die Größe der ganzen Zahlen hat, die ich aus der Datei lese?

Zum Beispiel, wenn die Datei hat 22 und 10, Zeilen sollte = 22 und Spalten anzu = 10.

Antwort

0

Unter der Annahme, die Eingabedatei durch einen Raum der Zeilen- und col Werte getrennt nur enthält, können Sie zu string streame die Zeile jeweils ein Wort nach einem int.

int rows, column; 
std::string line; 
std::ifstream file("Path To File"); 
if(file.is_open()){ 
    std::getline(file, line); 
    std::cout << line << std::endl; 
    std::stringstream(line) >> rows >> column; 
    file.close(); 
} 
int matrix[ rows][ column ]; 

Edited std :: string statt std :: stoi

+0

Muss ich #include etwas, um die std :: stoi zu verwenden? – Lithorz

+0

Stoi wurde in C++ 11 eingeführt. Wenn Ihr Compiler das nicht unterstützt, verwenden Sie std :: atoi (word.c_str()) – jla

+0

mmm, seltsam. Wenn ich entweder verwende, heißt es "Fehler: 'stoi' wurde auf diesem Bereich nicht deklariert" oder "Fehler: 'atoi' wurde auf diesem Bereich nicht deklariert" – Lithorz

0

beginnen mit Brute Force und stimmen Sie für die Leistung je nach Bedarf zu verwenden.

Sie müssen möglicherweise Zeilen in der Matrix mit Nullen auffüllen, wenn sie zu kurz sind.

Verwandte Themen