gcc 3.4.3 stringstream



  • Hallo,
    ich habe ein Problem mit dem folgenden kleinen Testprogramm:

    #include <sstream>
    #include <iostream>
    #include <string>
    #include <cassert>
    using namespace std;
    
    int main()
    {
            string i = "alfred berta charlie";
            stringstream str(i);
            int wc = 0;
            for (string word; str >> word; ++wc)
                    cout << word << endl;
            assert(wc == 3);
            return 0;
    }
    

    VC 6.0, 7.1, gcc 3.2 und gcc 2.95 führen dieses Programm problemlos aus und liefern als Ausgabe korrekterweise:

    alfred
    berta
    charlie
    

    Übersetze ich das Ganze hingegen mit dem gcc 3.4.3 feuert die Assertion und die Ausgabe ist fälschlicherweise:

    alfred berta charlie
    

    Ist das ein Bug im Compiler oder ist nur meine Installation kaputt?



  • falls es dir hilft, mit gcc 3.4.2 (mingw) funktioniert es und die ausgabe ist auch richtig.



  • 😕
    Mit dem g++ 3.3.4 geht es auch.
    Unter welchem OS läuft das Ding?
    Wenn es ein Bug ist: ➡ http://gcc.gnu.org/bugzilla/

    EDIT: Es ist einer: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10074 Kann aber sein, dass er sich durch eine neuere Standard-C-Bibliothek beheben lässt. Probier das mal.



  • Steven schrieb:

    Kann aber sein, dass er sich durch eine neuere Standard-C-Bibliothek beheben lässt. Probier das mal.

    Danke. Das war der entscheidene Hinweis. Mit einer 2.2.5er C-Lib funktioniert es (neuere Versionen der C-Lib vertragen sich leider nicht mit dem bereits etwas älteren Suse-Linux das hier eingesetzt wird).


Anmelden zum Antworten