2017-09-07 3 views
1

Was ich erreichen möchte, ist das Einlesen von Daten aus einer .txt Datei Zeile für Zeile unter Verwendung von getline() und Speichern als Zeichenfolge in der Variablen inVal. Ich möchte dann jede einzelne Zahl, die sich in der Zeichenfolge befindet, in einem einzelnen Element im Objektarray speichern, indem Sie sie an die Elementfunktion ArrayBag.add(value) übergeben. Bisher konnte ich Daten in inVal lesen, aber nichts, was ich versucht habe, war in der Lage, die Zahlen in der Zeichenfolge zu konvertieren und zu speichern, einschließlich des Codes unten nach getline(). Bitte irgendwelche Anleitung oder Tipps würden sehr geschätzt werden.So speichern Sie Ints in einer Zeichenfolge zu Elementen im Array

die .txt Datei sieht wie folgt aus:

3 4 5 7 5 16 7 12 11 12 3 9 9 8 1 12 
15 4 3 6 1 12 3 12 7 8 19 9 11 12 8 5 -4 -100 

Mein Code, der bisher geschrieben ive ist wie folgt:

void readInv(ArrayBag &ArrayBag1, ArrayBag &ArrayBag2) { 
    //ArrayBag1 and ArrayBag2 are objects of class ArrayBag 

    std::string inVal; 
    //value to hold each line in file 

    std::ifstream readFile; 
    readFile.open("setInventory.txt"); //"setInventory.txt" is the txt file being read from. 

    if (readFile.is_open()) { 
     std::cout << "File is being read." << std::endl; 

     while(!readFile.eof()) { 
      getline(readFile, inVal); 

      for(int i = 0; i < inVal.size(); i++) { 
       std::cout << inVal[i] << std::endl; 

       ArrayBag1.add(inVal[i] - '0'); 
       //ArrayBag1.add() is the public member function used to add the 
       //passing value to the private member array. 
      } 
     } 
    } 
} 
+0

verwenden können Thema (wird aber einen Fehler beheben, der bald kommt): [Warum ist iostream :: eof in einem Loop-Zustand? auf falsch betrachtet?] (https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-conspired-wrong) – user4581301

+1

Mögliches Duplikat von [Zeile zeilenweise lesen] (https: //stackoverflow.com/questions/7868936/read-file-line-by-line). Konkrete Antwort 1 Option 2. – user4581301

+0

Gibt es einen Grund, warum Sie 'std :: vector' nicht dafür verwenden können? Vektoren sind viel besser als Arrays. – Sailanarmo

Antwort

1

Ich glaube, Sie die Off stringstream

stringstream ss{readFile}; 
    while(ss) 
{ 
    //doing something 
    int a; 
    ss>>a; 
    ArrayBag1.add(a); 
} 
Verwandte Themen