fehlermeldung...aber was heißt die?



  • --------------------Configuration: zeahler - Win32 Debug--------------------
    Compiling...
    main.cpp
    F:\Programmierung\c++\visual cpp\zeahler\main.cpp(29) : error C2679: binary '>>'
     : no operator defined which takes a right-hand operand of type 'class
     std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>
     >' (or there is no
    
     acceptable conversion)
    
    F:\Programmierung\c++\visual cpp\zeahler\main.cpp(30) : error C2676: binary '=='
     : 'class std::basic_string<char,struct std::char_traits<char>,class
     std::allocator<char> >' does not define this operator or a conversion to a type
     acceptable to the pr
    edefined operator
    Error executing cl.exe.
    
    zeahler.exe - 2 error(s), 0 warning(s)
    

    plz help!



  • Poste mal ein Code-Fragment von der Stelle an der die Fehler auftreten.



  • 1. Es gibt für das Objekt das in dieser Zeile links steht keinen op>> für std::string - verwendest du dort cin?

    2. Du vergleichst einen std::string mit einem anderen Typ der den op== nicht (für std::string) defniert hat. Vergleichst du eventuell ein einzelnes Zeichen mit einem std::string?

    MfG SideWinder



  • hier der code

    cout <<"Nochmal? ja = 'j'. nein = 'n'.\n";
        cin >> ab;
        if (ab == "j") // fehler hier
        {		   // und hier
        main();
        }
    

    ja ich benutz cin
    das tolle is das es in def c++ funzt!

    ja ich vergeich ein zeichen mit einem string! soll ich den einfach 2 zeichen draus machen? in meinem fall ja und nein?



  • isses ein char?

    mach mal

    ab == 'j'



  • kommt immernoch die gleich fehlermeldung!



  • strcmp() ??



  • fgdsfg schrieb:

    strcmp() ??

    was sill das heißen???
    ich bin ein bischen c++ noob!



  • if!(strcmp(deinstring, 'j'))



  • ... noch besser...
    😞

    ich weß immer nochned was du meinst
    tut mir jaecht leid



  • installier dir mal die msdn

    strmcp() ist eine funktion die 2 strings vergleicht, hier die Funktionsweise

    **

    Routine Required Header Compatibility
    strcmp <string.h> ANSI, Win 95, Win NT

    [...]

    Return Value

    The return value for each of these functions indicates the lexicographic relation of string1 to string2.

    Value Relationship of string1 to string2
    < 0 string1 less than string2
    0 string1 identical to string2
    > 0 string1 greater than string2

    On an error, _mbscmp returns _NLSCMPERROR, which is defined in STRING.H and MBSTRING.H.

    Parameters

    string1, string2

    Null-terminated strings to compare

    **

    D.h. du willst haben deinstring == 'j', also sollen sie identisch (identical == 0) sein, sprich du rufst die funktion auf

    strcmp(deinstring, 'j'), die liefert jetzt, falls die identisch sind 0 zurück, also

    if(strcmp(deinstring, 'j') == 0)

    oder

    if!(strcmp(deinstring, 'j'))

    alles klar 🙂 ?



  • warum ned gleich so ^^
    aber wen ich das mach kommt ne andere fehlermeldung!
    geht also auch ned



  • Quellcode posten 🙄 😉



  • mkey

    #include <iostream>
    #include <time.h>
    using namespace std;
    
    int main()
    {					//open main
    					//Initialisieren der Variablen
    	int i;
    	int v;
    	string a;
    	time_t sec;
        time_t sec2;
    					//Abfrage wie weit gezählt werden sol    
        cout << "Wie weit soll gezealt werden?\n";
        cin >> v;
    	sec = time (NULL); //Starteit wird gespeichert
    					//Das zählen selbst	
    	for (i=0; i<v; i++)
    	{				//open for
    		cout << i << "\n";
    	}				//close for
    
    	sec2 = time (NULL); //Endzeit wird gespeichert
    
        cout <<"Dein PC hat in "<< sec2-sec << " sekunden bis " << i << " gezeahlt.\n"; //Ausgabe wielang und bis wo
    					//Soll nochmal gezählt werden    
        cout <<"Nochmal? ja = 'j'. nein = 'n'.\n";
        cin >> a;
        if (a == "j")
        {				//open if
        main();
        }				//open if
        else
        {				//open else
        return 0;
    	}				//close else
    }					//close main
    

    ich hab mich bemüht es übersichtlich zu halten ^^



  • Wie soll er denn einen std::string mit strcmp() vergleichen 🙄

    Vergiss das alles wieder.

    1. op>> ist nicht überladen, benütze stattdessen:

    string mystring;
    getline(cin,mystring);
    

    2. Ein einzelnes Zeichen kann man icht mit einem ganzen String vergleichen, vergleiche stattdessen String mit String:

    if(mystring == "j") // "" = String, '' = Zeichen
    

    MfG SideWinder



  • was hab ich denn anderes geschrieben? bzw ich sehe meinen fehler nicht? dazu hab ich doch zuerst geraten



  • muss ich denn noc was anderes einbinden? es geht immer nochned!



  • 1. Posting: Wieder einfache Anführungszeichen benützt
    2. Posting: strcmp() - sowas braucht man mit std::string eigentlich nie
    3. Posting: Wieder strcmp() und nochmals einfache Anführungszeichen, op! vor der if-Bedingung (vor der Klammer)
    4. Posting: Siehe 3. Posting

    Also wo bitte sind deine richtigen Antworten?

    MfG SideWinder



  • string a;
    
        cout <<"Nochmal? ja = 'j'. nein = 'n'.\n";
        cin >> a;
        if (a == "j")
    

    mach daraus:

    string a;
    
        cout <<"Nochmal? ja = 'j'. nein = 'n'.\n";
        cin >> a;
    if(!(strcmp(a.c_str(), "j")))
    

    Ka was daran falsch sein soll 😕



  • FlameDiver schrieb:

    muss ich denn noc was anderes einbinden? es geht immer nochned!

    1. Fehler
    2. Genaue Zeilenangaben wo der Fehler auftritt

    MfG SideWinder



  • LESEN !!!

    MfG SideWinder


Anmelden zum Antworten