TXT Datei in ein array laden?



  • wie kann ich den inhalt einer TXT datei zeilenweise in ein string array übergeben?

    //pseudo code
    Load_TXT_File("names.txt");
    for(int i = 0; i < 10; i++)
    {
        StringArray[i] = TXT_File_Zeile[i];
    }
    


  • hängt insbesondere davon ab wie dein stringarray aussieht... also obs std::strings sind oder char-arrays oder was auch immer

    wirf mal nen blick auf getline für c++ oder fgets für c...



  • danke aber mit getline komme ich nicht klar. und bei FILE weis ich nicht wie ich die zeilenanzahl ermitteln kann, damit die schleifenbedingung anhand dieser zahl läuft.

    FILE *Names;
        Names = fopen("names.txt","r");
    
        for(int i = 0; i < /* LINES VON NAMES?!?!?!? */; i++)
        {
        	getline(/*wie kann ich nun die zeile i vom file an Names[i] übergeben?*/);
        }
    


  • korrektur:

    FILE *Names;
        Names = fopen("names.txt","r");
        std::string Name[10];
    
        for(int i = 0; i < /* LINES VON NAMES?!?!?!? */; i++)
        {
        	std::getline(/*wie kann ich nun die zeile i vom file an Name[i] übergeben?*/);
        }
    


  • #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
    
    int main(){
    
    std::vector<std::string> filecontent;
    std::string tmp;
    std::ifstream ifs("test.txt");
    
    while(!ifs.eof()){
    	std::getline(ifs,tmp);
    	filecontent.push_back(tmp);
    
    }
    
    ifs.close();
    
    for(int i=0;i<filecontent.size();++i)
    	std::cout<<filecontent[i]<<std::endl;
    
    }
    


  • danke! ich krieg aber eine compilerwarnung:

    "Vergleich von signed- und unsigned-Werten"

    wieso?



  • vermutlich weil size() sinnvoller weise nur ein unsigend zurückliefern wird weil ein array negativer grösse keinen sinn macht... mach aus dem schleifenzähler einfach ein unsigned int oder nimm einen std::string:iterator


Anmelden zum Antworten