problem mit kleinem datei-parser



  • hallo
    meine datei sieht so aus:
    name:zahlen:zahlen
    ......
    name:zahlen:zahlen

    bis jetzt kann ich nur name auslesen wie es dann weiter geht weis ich nicht
    hier mal ein bissl code:

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main()
    {
      string name_="gerd"; //nur diese zeile soll ausgelesen werden
      string name;
      string zahlen1;
      string zahlen2;
      ifstream file;
      file.open("data.txt");
      char ch;
      while(file.get(ch))
      {
        if(ch==':')
          break;
        else
          name+=ch;
      }
      cout<<name<<endl;
      cout<<zahlen1<<endl;
      cout<<zahlen2<<endl;
      file.close();
      return 0;
    }
    

    es soll nur die zeile ausgelesen werden wo als name gerd steht z.B
    vielen dank



  • Du willst wohl so etwas:

    #include <vector>
    #include <string>
    #include <fstream>
    #include <iostream>
    
    std::vector<std::string::size_type> split_pos( std::string const & str , char sign )
    {
      std::string::size_type pos = 0;
      std::vector<std::string::size_type> vec;
      vec.push_back(pos);
      while( ( pos = str.find_first_of(sign,pos+1) ) != std::string::npos )
        vec.push_back(pos);
      return vec;
    }
    
    int main()
    {
      std::ifstream ifs("input.txt");
      std::string line , name , zahlen1 , zahlen2;
      std::getline(ifs,line);
      std::vector<std::string::size_type> vec = split_pos( line , ':' );
      if(vec.size() != 3)
        return 0;
    
      name    = line.substr( vec[0] , vec[1]++          );
      zahlen1 = line.substr( vec[1] , vec[2]++ - vec[1] );
      zahlen2 = line.substr( vec[2] );
    
      std::cout << name    << std::endl
                << zahlen1 << std::endl
                << zahlen2 << std::endl;
    }
    

Anmelden zum Antworten