while-Schleife terminiert nicht.



  • Natürlich möchte ich C++ lernen. 😉 Und ich kenne mich auch ein wenig mit std::strings aus. Aber in vielen C++-Büchern werden ja auch C-Strings benutzt.
    Es ist klar das std::strings große Vorzüge aufweisen. Aber wenn dies stilistisch
    ein solch großes Verbrechen ist, dann werde ich mich in Zukunft an euren Rat halten
    und C++-Strings statt C-Strings verwenden. 😃


  • Mod

    Honky schrieb:

    Aber in vielen C++-Büchern werden ja auch C-Strings benutzt.

    Ich äußere mal Zweifel an der Qualität deiner Literatur. Dirk Louis? Jürgen Wolf? Galileo-Verlag?



  • Galileo Verlag 😞



  • Warum verwendest du ein #define als Konstante statt

    const
    

  • Mod

    IrgendeinName schrieb:

    Warum verwendest du ein #define als Konstante statt

    const
    

    Hat er schon erklärt:

    Honky schrieb:

    Galileo Verlag 😞



  • Das hab ich im Eifer des Gefechts einfach schnell als #define gemacht. Ich ändere
    es aber in meinem Programm noch ab.



  • SeppJ schrieb:

    IrgendeinName schrieb:

    Warum verwendest du ein #define als Konstante statt

    const
    

    Hat er schon erklärt:

    Honky schrieb:

    Galileo Verlag 😞

    LOL 😃
    Ja ok, ich habs verstanden. Ich werde mir einen besseren Stil aneignen. 😃



  • Juergen unser alter Schlawiner schreibt nicht explizit, dass Makros boese sind. Er zeigt nur Unterschiede zwischen Konstanten und (Skalar-Literal) Makros.



  • Honky schrieb:

    Ich werde mir einen besseren Stil aneignen. 😃

    Eigne Dir lieber ein gutes Buch an. In Sepps Signatur gibt es einen Link mit Buchempfehlungen.



  • Sone schrieb:

    (Skalar-Literal) Makros.

    Woher nimmst du nur die Wörter. 😃



  • Für das Separieren eines durch Whitespaces getrennten Teilstrings aus einem String nimmt man sscanf und einen Einzeiler wie

    if( 1==sscanf(" blafasel\t\n","%49s",chararray50) )
      puts(chararray50);
    else
      puts("EOF oder Lesefehler");
    

    Und der Ausgangsstring darf sogar const sein, bzw. implizit const als Stringliteral.



  • Wutz schrieb:

    Für das Separieren eines durch Whitespaces getrennten Teilstrings aus einem String nimmt man sscanf und einen Einzeiler wie

    if( 1==sscanf(" blafasel\t\n","%49s",chararray50) )
      puts(chararray50);
    else
      puts("EOF oder Lesefehler");
    

    Und der Ausgangsstring darf sogar const sein, bzw. implizit const als Stringliteral.

    tinnef.
    ich nehme an, das wort ist vorher nicht bekannt. dann nimmt man funktionen wie find, copy, etc. aus der string-bibliothek.
    http://www.cplusplus.com/reference/string/string/



  • Oder direkt boost::split



  • Wutz schrieb:

    Für das Separieren eines durch Whitespaces getrennten Teilstrings aus einem String nimmt man sscanf und einen Einzeiler wie

    if( 1==sscanf(" blafasel\t\n","%49s",chararray50) )
      puts(chararray50);
    else
      puts("EOF oder Lesefehler");
    

    Und der Ausgangsstring darf sogar const sein, bzw. implizit const als Stringliteral.

    Sind wir im C-Forum? Geh bloss weg mit diesem Dreck... 👎

    std::string hw = "Hallo Welt!",
                erstesWort;
    
    std::istringstream(hw) >> erstesWort;
    

    Oder dein Beispiel (wenn ich es verstanden habe):

    std::string hw = " blafasel\t\n",
                erstesWort;
    
    std::istringstream(hw) >> std::ws >> erstesWort;
    

    @Eisflamme: Obiges ist einfacher und braucht kein boost :p

    Sorry fuer die ganzen edits.



  • Sone schrieb:

    Sind wir im C-Forum? Geh bloss weg mit diesem Dreck... 👎

    armes deutschland ... 👎



  • b.b. schrieb:

    Sone schrieb:

    Sind wir im C-Forum? Geh bloss weg mit diesem Dreck... 👎

    armes deutschland ... 👎

    Nicht annaehrend so arm wie dein Post an Argumentation und Sinn.



  • Für ein Element ist das sicher am Besten so. 🙂 Für mehrere packt split das aber alles schon brav in einen vector. Gut, ein kleines while und push_back darauf hin geht wohl auch.

    Diese Variante von Dir geht aber erst mit C++11 so kurz, richtig?



  • Eisflamme schrieb:

    Für ein Element ist das sicher am Besten so. 🙂 Für mehrere packt split das aber alles schon brav in einen vector. Gut, ein kleines while und push_back darauf hin geht wohl auch.

    O ja:

    std::vector<std::string> strings;
        std::istringstream stream(" das ist die geschischte\t von\nbla");
    
        while( stream )
        {
            strings.push_back( std::string() );
            stream >> std::ws >> strings.back();
        }
    

    Diese Variante von Dir geht aber erst mit C++11 so kurz, richtig?

    Nope. 🙂



  • Sone schrieb:

    Eisflamme schrieb:

    Diese Variante von Dir geht aber erst mit C++11 so kurz, richtig?

    Nope. 🙂

    Doch. Er meinte:

    std::string hw = "Hallo Welt!",
    erstesWort;
    std::istringstream(hw) >> erstesWort; // Error: no match for 'operator>>' in 'std::basic_istringstream<char>((*(const __string_type*)(& hw)), (std::_Ios_Openmode)8u) >> erstesWort
    

    Und das hatte ich bereits ganz oben geschrieben.



  • [latex]

    Gugelmoser schrieb:

    Sone schrieb:

    Eisflamme schrieb:

    Diese Variante von Dir geht aber erst mit C++11 so kurz, richtig?

    Nope. 🙂

    Doch. Er meinte:

    std::string hw = "Hallo Welt!",
    erstesWort;
    std::istringstream(hw) >> erstesWort; // Error: no match for 'operator>>' in 'std::basic_istringstream<char>((*(const __string_type*)(& hw)), (std::_Ios_Openmode)8u) >> erstesWort
    

    Und das hatte ich bereits ganz oben geschrieben.

    Ah shit, jetzt sehe ich es auch. Klar, hast Recht.
    Dachte, ging schon immer mit rtemporaeren Objekten.


Anmelden zum Antworten