string funzt nicht



  • Hallo Cppfreunde,
    ich habe ein kleines Programm geschrieben und bekomme es nicht zum laufen.

    #include <string>
    using namespace std;

    int main(void)
    {
    string str1, str2;

    str1="foo1"; str2="foo2";
    return 0;
    }
    Nach allen Regeln der Kunst dürfte es doch da keine Probleme geben. Oder?
    Ich arbeite auf einen Unix-System. Der Befehl uname -a ergiebt folgendes:

    SunOS is0171 5.6 Generic_105181-23 sun4u sparc SUNW,Ultra-4

    Zum übersetzen gebe ich folgendes ein:
    gcc foo.cpp -o foo

    und bekomme dann:

    Undefined first referenced
    symbol in file
    __length_error(char const ) /var/tmp/ccBcOGwB.o
    ostream::operator<<(ostream &(
    )(ostream &))/var/tmp/ccBcOGwB.o
    endl(ostream &) /var/tmp/ccBcOGwB.o
    cerr /var/tmp/ccBcOGwB.o
    ostream::operator<<(char const 😉 /var/tmp/ccBcOGwB.o
    string_char_traits<char>::copy(char *, char const *, unsigned int)/var/tmp/ccBcOGwB.o
    string_char_traits<char>::length(char const *)/var/tmp/ccBcOGwB.o
    string_char_traits<char>::move(char *, char const *, unsigned int)/var/tmp/ccBcOGwB.o
    __out_of_range(char const 😉 /var/tmp/ccBcOGwB.o
    ld: fatal: Symbol referencing errors. No output written to foo
    collect2: ld returned 1 exit status

    Wer kann mir helfen?

    Bis bald
    foo



  • Kompiliere mal mit
    g++ statt gcc
    oder linke die libstdc++ dazu.





  • Danke für die schnelle Hilfe. Komme jetzt öfter 😉
    g++ hat geholfen.
    Was ist eigentlich der Unterschied zwischen g++ und gcc?
    Die links habe ich noch nicht angeschaut, vielleicht steht dort ja was.
    Bis bald
    foo



  • Hallo,

    gcc steht fuer gnu c compiler und ist ein C-Compiler
    g++ ist der gnu C++ Compiler

    Gruß Entyl Sa



  • Man könnte anstatt

    int main()
    

    doch eigentlich auch

    void main()
    

    verwenden oder?



  • Nein, das ist genau so falsch wie "mian" zu schreiben, nur akzeptieren es einige Compiler....



  • g++ ruft den GCC mit bestimmten Optionen auf. Also ua. das die libstdc++ mitgelinkt werden soll.

    GCC steht übrigens nicht mehr für GNU C Compiler sondern für GNU Compiler Collection, da ja mittlerweile weit mehr Sprachen als nur C unterstützt werden

    @Roland++
    Nein, void main ist vom Standard her nicht vorgesehen und man sollte es nicht benutzen. Leider wird void main in vielen (schlechten) Tutorials/Büchern vorgestellt.



  • gehört dass schlüßelwort eigentlich zur Sprachenerweiteerung?
    hab ich jetzt das erste mal gelesen.

    sonst macht man doch eine char-Array 😕

    Ich hab ein Buch ( Das C++ Grundlagen Buch, Data Becker) darin steht main mit void



  • Roland++ schrieb:

    gehört dass schlüßelwort eigentlich zur Sprachenerweiteerung?
    hab ich jetzt das erste mal gelesen.

    sonst macht man doch eine char-Array 😕

    Ich hab ein Buch ( Das C++ Grundlagen Buch, Data Becker) darin steht main mit void

    ein schönes buch, ab älter und nicht standardkonform.. kann man gut zur konsolenprogrammierung gebrauchen, wenns nicht auf standard ankommt.

    ansonsten: die neue stringklasse mal anschaun, roland, die steht da noch nicht drin und birgt einige erleichterungen..



  • std::string ist kein Schlüsselwort oder Builtin Type, wie char, sondern eine Klasse.

    http://www.schornboeck.net/ckurs/index.htm


Anmelden zum Antworten