2016-04-14 2 views
-2

Ich habe eine Datei mit folgendem Inhalt: tdogicatzhpigu und einem anderen Datei mit folgendem Inhalt:C++ Zeichenfolge aus .txt-Datei in String-Array hinzuzufügen, und um den Wert des Feldes anzuzeigen

dog 
pig 
cat 
rat 
fox 
cow 

in separaten Zeilen.

Der folgende Code zeigt meine Versuche, dies in einem Menü zu tun, das eine do while-Schleife ist.

if (selection == 1) { 

     //Gets the characters from the textfile and creates an array of characters. 
     fstream fin1("text1.txt", fstream::in); 
     if (fin1.is_open()) 
     { 
      cout << "text1.txt successfully added to an array" << endl; 
      while (!fin1.eof()) { 
       if (!fin1.eof()) { 
        for (int i = 0; i < 14; i++) { 
         for (int e = 0; e < 14; e++) { 
          fin1 >> chArray[i][e]; 

         } 
        } 
       } 
      } 
     } 
     else if (!fin1.is_open()) 
     { 
      cout << "ERROR: "; 
      cout << "Can't open text1.txt file\n"; 
     } 
     fin1.close(); 
     //Get the string values from the file and add into an array of strings 

     fstream fin2("search1.txt", fstream::in); 
     if (fin2.is_open()) { 
      cout << "Search1.txt successfully added to an array" << endl; 
      cout << "------------------------------------------------------------------------" << endl; 
      while (!fin2.eof()) { 
       if (!fin2.eof()) { 
        for (int j = 0; j <= 6; ++j) { 
         getline(fin2, wordsArray[j]); 

        } 
       } 
      } 
     } 

jetzt, wenn ich die Arrays innerhalb Auswahl 1 gedruckt wird, zeigt es richtig für beide, alles ist gut, aber in der folgenden Auswahl 2 ich einmal versuche erneut, um den Inhalt von Charray anzeigen, aber es fehlt die "t" aus aus irgendeinem Grund :

else if (selection == 2) { 
     for (int i = 0; i < 14; i++) { 
      cout << chArray[0][i] << endl; 
     } 

Mit Auswahl 3 und versuchte, die wordsArray angezeigt werden, gar nichts angezeigt wird, hier ist der Code für die Auswahl 3:

else if (selection == 3) { 
     for (int j = 0; j <= 6; ++j) { 
      cout << wordsArray[j] << endl; 
     } 
+0

Ich konnte das Problem nicht duplizieren, es funktioniert gut, wenn ich es mit der angegebenen Eingabe ausführen. BTW warum benutzt du zweidimensionales Array, um die Charaktere zu speichern? –

+0

Und wo in Ihrem Programm deklarieren Sie die Arrays? –

+0

Die Arrays werden außerhalb der do while-Schleife deklariert, ich würde es vorziehen, jedes Zeichen in jedem Element im Array zu speichern, aber ich bin nicht sicher, wie das funktioniert, wie in der Datei, es ist zusammen als eine Zeichenfolge, keine Leerzeichen zwischen den Zeichen – jbob

Antwort

2

Versuchen Sie, diese (ich nur die Änderungen geschrieben haben, sollten Sie machen, so die anderen Code zu halten, wie es ist):

string chArray; 
string wordsArray[6]; 

do 
{ 
....//other code 

if (selection == 1) 
{ 

    if (fin1.is_open()) 
    { 
     cout << "text1.txt successfully added to an array" << endl; 
     if(!getline(fin1,chArray))//read the whole line from the file into the string 
     //show error message that a file was not read successfully 
    } 

    ..... 

    for (int j = 0; j < 6; ++j)//change j<=6 to j<6 since your array has 6 elements 

    ..... 

} 
else if (selection == 2) 
{ 
    for (int i = 0; i < 14; i++) 
     cout << chArray[i] << endl;//no need to access this as two dimensional array 

..... 

} 
else if (selection == 3) 
{ 
    for (int j = 0; j < 6; ++j)//change j<=6 to j<6 since your array has 6 elements 
     .... 
} 

}while(selection != your exit value); 

Hoffnung, das hilft.

+0

Ich schätze die Hilfe, ich werde die Änderungen implementieren und Sie wissen lassen, wie es geht – jbob

Verwandte Themen