wie strings auseinander nehmen



  • hi

    ich muß ja zugeben, ich komm mehr aus der php richtung.

    leider hab ich mit c++ grad ein sau dummes problem, was vermutlich keines ist.

    ich les zeilenweise aus einer datei ein.
    da stehen nur daten drinnen. also...

    01.12.2001
    12.03.2006
    .
    .
    .

    ich hol mir des zeilenweise raus und tus in nen string rein.

    also is im string s ="01.12.2001" drinnen...

    wie kann ich jetzt am dümmsten des so machen, dass ich den dann zerpflücke und danach so zusammen setze?

    aus
    01.12.2001
    mache
    20011201

    gruß
    peterli



  • per substr ist das recht einfach, vorausgesetz Tag und Monat sind 2 Stellig, Jahr 4 Stellig.

    string s = "01.12.2003";
    string iso(s.substr(6, 4) + s.substr(3, 2) + s.substr(0, 2));
    cout << iso << endl;
    


  • hi

    vielen dank!

    dann hab ich gleich noch ne frage...

    ich habs jetzt so

    int main () 
    {
        fstream outputFile;
        ifstream inputFile("test.txt");
        outputFile.open("output.txt", ios::out);
        while(!inputFile.eof())
        {
               string s;
               getline( inputFile, s, inputFile.widen('>') );
               string txt(s.substr(6, 4) + s.substr(3, 2) + s.substr(0, 2));
               outputFile << txt << endl;
        }
        outputFile.close();
        system("pause");
    
        return 0;
    }
    

    leider macht der mir aber nur die erste zeile.

    was mach ich da falsch?

    gruß



  • hi

    ok, hab den fehler schon... des kommt davon, wenn man aus einem seiner anderen cods was rauskopiert.. *g*

    lag an dem...

    inputFile.widen('>')

    danke nochmal!!

    gruß



  • #include <algorithm>
    #include <string>
    #include <fstream>
    
    bool is_dot(char c) { return c == '.'; }
    
    int main()
    {
    	std::ofstream out_stream("output.txt");
    	std::ifstream inp_stream("input.txt");
    	std::string line_tmp;
    	while (std::getline(inp_stream, line_tmp))
    	{
    		std::reverse(line_tmp.begin(), line_tmp.end());
    		std::remove_if(line_tmp.begin(), line_tmp.end(), is_dot);
    		out_stream << line_tmp << std::endl;
    	}
    }
    

    ^^



  • Guck nochmal drüber, aus 01.12.2001 würde bei dir 10022101 und nicht 20011201 werden :p



  • ähm ja stimmt ... vergessen ^^


Anmelden zum Antworten