[C++] << Ungülltig und rechter Operand

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [C++] << Ungülltig und rechter Operand

    hallo

    ich versuche gerade ein weing c++ zu progen. geht eigenlich ganz gut, bis auf diese doven typen

    Fehler meldung:
    main.cpp(145) : error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'char [2]' ist
    ich habe leider keine ahung was die meldung soll

    hier der ausschnit aus dem code:
    Code:
    std::string text;
    char ch;
    FILE *output;
    text = tmp.substr(tmp.find(" ")+1).substr(8);
    			
    time_t Zeitstempel;
    tm *nun;
    Zeitstempel = time(0);
    nun = localtime(&Zeitstempel);
    			
    ch << "[" << nun->tm_hour << ":" << nun->tm_min << ":" << nun->tm_sec << "] " << text << std::endl;  // zeile 145
    output = fopen( "irc.log", "w" );
    putc( ch, output );
    fclose( output ); 
    std::cout << ch;
    der code soll die variable text mit anderen verbinden und dann in irc.log speichern.
    Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg

  • #2
    Ist das die einzige Fehlermeldung oder ist da noch etwas anderes vor?
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      ist die einzige.

      wenn ich alerdings bei zeile 145 nur
      ch << text;
      schreibe, dan erhalte ich 9 meldungen, die ich nicht wirklich verstehe
      Code:
      main.cpp(145) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,
      const class std::ba
      sic_string<_E,_Tr,_A> &)' : Vorlagenargument für 'class std::basic_ostream<_E,_Tr> &' von 'char' konnte nicht hergeleitet werden
      
      main.cpp(145) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> 
      &,const short *)' : V
      orlagenargument für 'class std::basic_ostream<_E,_Tr> &' von 'char' konnte nicht hergeleitet werden
      
      main.cpp(145) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> 
      &,const unsigned char
      )' : Vorlagenargument für 'class std::basic_ostream<_E,_Tr> &' von 'char' konnte nicht hergeleitet werden
      
      main.cpp(145) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> 
      &,const unsigned char
       *)' : Vorlagenargument für 'class std::basic_ostream<_E,_Tr> &' von 'char' konnte nicht hergeleitet werden
      
      main.cpp(145) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> 
      &,const signed char)'
       : Vorlagenargument für 'class std::basic_ostream<_E,_Tr> &' von 'char' konnte nicht hergeleitet werden
      
      main.cpp(145) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> 
      &,const signed char *
      )' : Vorlagenargument für 'class std::basic_ostream<_E,_Tr> &' von 'char' konnte nicht hergeleitet werden
      
      main.cpp(145) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> 
      &,_E)' : Vorlagenargu
      ment für 'class std::basic_ostream<_E,_Tr> &' von 'char' konnte nicht hergeleitet werden
      
      main.cpp(145) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> 
      &,const _E *)' : Vorl
      agenargument für 'class std::basic_ostream<_E,_Tr> &' von 'char' konnte nicht hergeleitet werden
      
      main.cpp(145) : error C2677: Binaerer Operator '<<' :  Kein globaler Operator definiert, der den Typ 'class 
      std::basic_string<char,struct std::char_traits<char>,
      class std::allocator<char> >' akzeptiert (oder keine geeignete Konvertierung moeglich)
      Zuletzt geändert von Rolandbar; 07.08.2006, 09:13.
      Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg

      Kommentar


      • #4
        Das riecht nach falschen includes.
        Zeig mal den header deiner Datei
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Kommentar


        • #5
          Code:
          #pragma comment(lib, "ws2_32.lib")
          
          #include <iostream>
          #include <string>
          #include <stdio.h>
          #include <windows.h>
          #include <winsock.h>
          #include <process.h>
          #include <time.h>
          Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg

          Kommentar


          • #6
            Ich würde mir nochmal genau überlegen was Du in Zeile 145 machen willst ... formuliere das doch mal in Worten ... und dann wirst Du auch auf Deinen Fehler kommen ... !
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              using namespace std;

              Irgendwo drin?

              Anstatt iostream mal iostream.h versucht?
              gruss Chris

              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

              Kommentar


              • #8
                ok alles funktioniert soweit wie ich es will.

                ich habe zusätzlich eine logfunction geschrieben.
                aber leider steht in der log folgendes:

                [15:7:25] #xxx :2345
                <ganz viele lehrzeichen> [15:7:37] #xxx :1...
                auserdem bekomme ich beim beenden eine error. im anhang hat es ein e zip datei mit einem screen vom error, die c++ datei und die log datei.

                ich weiss leider nicht warum diese sachen komen.
                ps: das programm ist ein irc-client.
                Zuletzt geändert von Rolandbar; 08.08.2006, 08:55.
                Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg

                Kommentar


                • #9
                  unsigned int VerbindenAnServer(std::string server, int port);

                  Wie wäre es, wenn du vor dem Beenden des Progamms noch eine disconnect funktion schreibst.

                  z.B

                  void VerbindungTrennen(void *sock)

                  Auszug aus msdn

                  Sockets that were open when WSACleanup was called are reset and automatically deallocated as if closesocket were called; sockets that have been closed with closesocket but that still have pending data to be sent can be affected???the pending data can be lost if the WS2_32.DLL is unloaded from memory as the application exits. To insure that all pending data is sent, an application should use shutdown to close the connection, then wait until the close completes before calling closesocket and WSACleanup. All resources and internal state, such as queued unposted-posted messages, must be deallocated so as to be available to the next user.
                  Warum in deiner Logfunktion so viele Leerzeichen drin stehen kannst nur du selbst ausprobieren.

                  Du pointerst dir da einen zurecht, da blick ich ohne ein Lauffähiges Programm nicht durch.
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    EDIT:

                    OK ich habe es geschaft. Wie genau weiss ich auch nicht mehr so genau
                    Danke für die hilfe.

                    Zuletzt geändert von Rolandbar; 08.08.2006, 08:55.
                    Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg

                    Kommentar


                    • #11
                      Re: [C++] &lt;&lt; Ungülltig und rechter Operand

                      Original geschrieben von Rolandbar


                      Code:
                      			
                      ch << "[" << nun->tm_hour << ":" << nun->tm_min << ":" << nun->tm_sec << "] " << text << std::endl;  // zeile 145
                      Ist zwar nicht mehr aktuell, aber für alle die wissen wollen was hier
                      falsch ist.

                      ch ist vom typ char. Für char gibt es keine implementierung des
                      operator<< bei der die rechte seite ein char-zeiger ist.

                      Btw. ist das völliger murkscode. Du hantierst da mit c-file-io rum.

                      Du kannst auch den op<< nicht mit std::string verwenden und hoffen
                      dass du dann daten in den string schieben kannst. std::string ist
                      kein stream. Dafür gibt es stringstreams.


                      Vorschlag zur güte. Schau dir noch einmal einpaar anfängertutorials
                      zum thema c++ an.

                      greets
                      (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                      Kommentar

                      Lädt...
                      X