char* 2 string



  • CodeFinder schrieb:

    Du kannst aber keine std::string-Objekte über die Standardausgabe ausgeben, da der Operator << für diesen Typ nicht überladen ist.

    😮 😮 😮



  • Also mir wäre das auch neu, das ich einen string nicht an cout schieben kann. Ich machs immer so.



  • ten schrieb:

    CodeFinder schrieb:

    #include <ioStream>
    #include <String>
    

    ist das nicht case sensitive?
    :xmas2:

    Nein.

    Aber die Sache mit dem Ausgeben von std::string war murks^^. Der Operator ist überladen (habe mich da von ner dämlichen Fehlermeldung meines Compilers irritieren lassen). Sorry!



  • Hallo zusammen,

    doch in der Präprozessoranweisung include ist die Beachtung der Groß- bzw. Kleinschreibung entscheidend.

    Dies zeigt nicht nur ein Blick in das Verzeichnis der Header...

    martin@debian:/usr/include/c++/3.3$ ls
    algorithm complex deque iterator stack
    backward csetjmp exception limits stdexcept
    bits csignal exception_defines.h list streambuf
    bitset cstdarg ext locale string
    cassert cstddef fstream map typeinfo
    cctype cstdio functional memory utility
    cerrno cstdlib i486-linux new valarray
    cfloat cstring iomanip numeric vector
    ciso646 ctime ios ostream
    climits cwchar iosfwd queue
    clocale cwctype iostream set
    cmath cxxabi.h istream sstream
    martin@debian:/usr/include/c++/3.3$

    ... sondern auch die Fehlermeldungen des Compilers:

    $ g++ main.cpp
    main.cpp:1:20: ioStream: Datei oder Verzeichnis nicht gefunden
    main.cpp: In function int main()': main.cpp:6: error:cout' undeclared (first use this function)
    main.cpp:6: error: (Each undeclared identifier is reported only once for each
    function it appears in.)
    $

    Grüße
    Martin



  • Xin schrieb:

    Ungefähr so, wie Du es beschrieben hast.
    Du solltest lediglich noch den Variablennamen einfügen...

    Was kommt denn bei Dir raus?

    Ausagbe:
    bla\n\nbla\n

    Er gibt die Formatierungen mit aus.



  • Dann hast du irgendwo anders Dummheiten gemacht, also solltest du mal etwas mehr Code zeigen.

    '\n' in String/Zeichen-Literalen wird schon während der Überstzung umgewandelt in das Zeilenende-Zeichen - und das bewirkt dann in der Ausgabe auch einen Zeilenwechsel.

    Probleme könntest du höchstens bekommen, wenn dein String vom Anwender kommt - wenn der ein \n eintippt, werden daraus auch zwei unabhängige Zeichen '\' und 'n' (die auch genau so wieder ausgegeben werden). In dem Fall könntest du über die Eingabe drüberlaufen und alle Vorkommen von "\\n" ersetzen durch "\n".



  • CodeFinder schrieb:

    ten schrieb:

    CodeFinder schrieb:

    #include <ioStream>
    #include <String>
    

    ist das nicht case sensitive?
    :xmas2:

    Nein.

    auf jedem system 'nein' ?
    oder nur unter windooze?



  • ISO/IEC 14882:1998 schrieb:

    16.2 Absatz 5
    [...] The implementation may ignore the distinctions of alphabetical case.

    Also ist "auf jedem System 'nein'" mit "nein" zu beantworten 😃



  • hehe 😃 ... Also habs mal mit Visual C++ 6.0 und Visual C++ 2005 ausprobiert, da gings...hängt dann wohl doch vom Compiler ab.



  • CodeFinder schrieb:

    hängt dann wohl doch vom Compiler ab.

    Vermutlich eher vom drunterliegenden Betriebssystem (sprich: unter Windows klappt es, unter Linux höchstwahrscheinlich nicht (weil dort das Dateisystem case-sensitiv arbeitet)).


Anmelden zum Antworten