CString ausgeben

Von: , Frage gestellt am Do, 14. Jun 2007

Hallo alle;
ich moechte mir ein CString mittels cout ausgeben ungefaehr so:
CString patternname("pattername");
cout<<(LPCTSTR)pattername;

leider es wird nur die Adresse von der CString ausgegeben.
mit :wcout<<(LPCTSTR)pattername;
wird die Zeichenkette ausgegeben aber am Ende wird die Adresse angehaengt,die ich nicht brauche.
ich bin jeder Hilfe dankbar.
Gruss.

7 Antworten zu dieser Frage

  1. Antwort von nach 12 Stunden 0 hilfreich
    Re: CString ausgeben

    Also ich glaub am Besten wärs, wenn du mal den kompletten code - zumindest die main() in dem Fall schreiben würdest, dass dir hier die experten helfen können, inwieweit da was in den Funktionen nicht stimmt...

    • Antwort von nach 21 Stunden 0 hilfreich
      Re^2: CString ausgeben

      Also ich glaub am Besten wärs, wenn du mal den kompletten code
      - zumindest die main() in dem Fall schreiben würdest, dass dir
      hier die experten helfen können, inwieweit da was in den
      Funktionen nicht stimmt...
      Also das ist eine einfaches Main programm so in dem Art

      main()
      {
      CString xmlNode;
      cout<<(LPCTSTR)xmlNode<<"\n";
      return 0;


      }

      • Antwort von nach 2 Tagen 0 hilfreich
        Re^3: CString ausgeben

        Hi,

        lass doch einfach den sinnlosen cast weg. dann sollte es auch funktionieren.

        std::cout << mein_CString_objekt;


        grüße [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

        • Antwort von nach 3 Tagen 0 hilfreich
          Re^4: CString ausgeben

          hi;
          Leider hat es nicht geklappt ich kriege immer die Adresse von der Zeichenkette nur.
          Danke [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

          • Antwort von nach 5 Tagen 0 hilfreich
            Re^5: CString ausgeben

            Hallo Leute, cout<<(LPCTSTR)xmlNode<<"\n";
            So sinnlos ist der Cast wieder nicht: wenn man die Member-Liste anguckt, was ja nur geringe Mühe macht, findet man einen

            operator LPCTSTR();

            insofern ist das schon berechtigt funktioniert aber nicht (Implementation?).

            Das hier geht nicht,
            cout << xmlNode << "\n";

            weil die Micro-Softies auf den "operator << ()" vergessen haben.

            Das hier geht aber:
            cout << (char *) xmlNode << "\n";


            Man braucht nämlich nur ein neues Projekt "Konsole, mit MFC" anzulegen, was ja nur geringe Mühe macht, da zeigen sie es ja vor mit:
            cout << (TCHAR *) myString << "\n";

            Und das ist eben nichts anderes, als ein "char *", ;-).

            lg an alle
            Martin B

            • Antwort von nach 22 Tagen 0 hilfreich
              Re^6: CString ausgeben

              Moin Man braucht nämlich nur ein neues Projekt "Konsole, mit MFC"
              anzulegen, was ja nur geringe Mühe macht, da zeigen sie es ja
              vor mit:

              cout << (TCHAR *) myString << "\n";

              Und das ist eben nichts anderes, als ein "char *", ;-).
              Vorsicht! TCHAR ist in der Winnt.h folgendermassen definiert:

              #ifdef UNICODE // r_winnt
              typedef WCHAR TCHAR, *PTCHAR;
              #else /* UNICODE */ // r_winnt
              typedef char TCHAR, *PTCHAR;
              #endif /* UNICODE */ // r_winnt

              THCAR* ist dann ein char* wenn nicht mit UNICODE gearbeitet wird, ansonsten ist es ein wchar* ;)

              Gruss
              Peer

      • Antwort von nach 22 Tagen 0 hilfreich
        Re^3: CString ausgeben

        Hi Also das ist eine einfaches Main programm so in dem Art

        main()
        {
        CString xmlNode;
        cout<<(LPCTSTR)xmlNode<<"\n";
        return 0;
        }
        Versuch mal folgendes:

        int main(int argc, char** argv)
        {
        CString xmlNode(_T("My String"));
        #ifdef UNICODE
        std::wcout << (LPCTSTR)xmlNode << std::endl;
        #else // UNICODE
        std::cout << (LPCTSTR)xmlNode << std::endl;
        #endif // UNICODE
        return 0;
        }

        Ausgabe unter VS2005 bei mir:
        1. mit Unicode: My String
        2. ohne Unicode: My String

        Gruss
        Peer

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!