problem mit abfrage von strings



  • #include "stdafx.h"
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    int main()
    {
    	float bg;
    	float gg;
    	float ausgabe;
    	char bego;
    
    	cout << "Falls sie eine Größe in Gothic eingeben\n und die Größe in blender erhalten wollen \n geben sie gb ein falls andersherum \n bg eingeben\n (bei beidem mit \"enter\" bestätigen)" << endl;
    	cin >> bego;
    
    		if (bego = "bg")
    		{
    			cout << "größe in blender angeben (dezimalzahl z.B. 0.756)" << endl;
    			cin >> bg;
    				bg * 2.932 = ausgabe;
    
    			cout << ausgabe << "1.000 = 1m in gothic" << endl;
    		}
    		else if (bego = "gb")
    		{
    			cout << "größe in gothic angeben (1.000 = 1m in gothic)" << endl;
    			cin >> gg;
    				gg / 2.932 = ausgabe;
    			cout << "größe in gothic" << ausgabe << endl;
    		}
    }
    

    der compiler meckert bei den if abfragen der strings immer :

    "'const char [3]' kann nicht in 'char' konvertiert werden

    außerdem meckert er dass das '=' bei den Rechnungen ein "L-wert sein muss.

    kann mir da jemand weiterhelfen???



  • MERKE: (Und sag es 3 mal auf):
    '=' ist der Zuweisungsoperator, mit ihm kann einer Variable/ einem Objekt ein Wert zugewiesen werden, z.B. int b = 5;
    '==' ist der Vergleichsoperator, der auf Gleichheit prüft und einen boolean-Wert zurückgibt, z.B. f == 3. Was denkst du, was ist in einer If-Abfrage erforderlich, '=' oder '==' ?

    PS: Wieso verwendest du vorkompilierte Header?



  • er bringt immer noch den gleichen error



  • eliasdfg(der Anfänger) schrieb:

    char bego;
    ...
    	cin >> bego;
    

    Du stellst ein Byte Speicher zur Verfügung und erwartest aber eine Eingabe von min. 2 Byte ( "bg" bzw. "gb" ).
    Also erstmal genug Speicher bereit stellen!
    z.B. char bego[3]
    und dann kannst du die Abfrage formulieren:

    if( bego[0]=='b' && bego[1]=='g' ) {...}
    //bzw.
    if( bego[0]=='g' && bego[1]=='b' ) {...}
    

    Du kannst in C und C++ auch keine Strings vergleichen, so wie du es wolltest:
    if( bego == "bg" )
    Du würdest hier nur die Pointer vergleichen und da "bg" const ist und bego eine Variable, sind die beiden immer verschieden.



  • TLEP schrieb:

    Du kannst in C und C++ auch keine Strings vergleichen, so wie du es wolltest:
    if( bego == "bg" )

    Die Aussage ist unglücklich.
    Ja, C-Strings lassen sich nicht vergleichen (sei es nun unter C oder C++).
    Nein, wenn unter C++ die Stringklassen verwendet (wie std::string) geht dies sehr wohl.

    cu André



  • er sagt bei der berechenung von bg und gb:

    cin >> bg;
                    bg * 2.932 = ausgabe;
    

    "'=' linker operand muss ein L-wert sein"

    Keine ahnung ist doch korrekt oder 😕



  • eliasdfg(der Anfänger) schrieb:

    er sagt bei der berechenung von bg und gb:

    cin >> bg;
                    bg * 2.932 = ausgabe;
    

    "'=' linker operand muss ein L-wert sein"

    Keine ahnung ist doch korrekt oder 😕

    drehe das mal um:

    ausgabe = bg * 2.932;
    

    so sollte es funktionieren.

    Natürlich musst du das auch mit dem machen:

    gg / 2.932 = ausgabe; //falsch
    ausgabe = gg / 2.932; //richtig
    

    mfg Dimo

    PS.: das sind Grundlagen



  • TLEP schrieb:

    Du kannst in C und C++ auch keine Strings vergleichen, so wie du es wolltest:
    if( bego == "bg" )
    Du würdest hier nur die Pointer vergleichen und da "bg" const ist und bego eine Variable, sind die beiden immer verschieden.

    Man kann Strings auf zwei Weisen vergleichen:

    1. C++std-Style
    std::String szStr_0;
    std::String szStr_1;
    
    // tue etwas
    
    if (szStr_0 == szStr_1)
         cout << "Sind gleich!";
    else
         cout << "Ungleich!";
    

    oder "classisch" C-Like:

    char   szStr_0 [IrentwasGroesse],
           szStr_1 [IrentwasGroesse];
    
    // tue wieder etwas
    
    if (strcmp (szStr_0, szStr_1) == 0)
           printf ("Sind gleich!");
    else
           printf ("Sind ungleich!");
    


  • hartmut1164 schrieb:

    std::String szStr_0;
    

    std::string wennschon 😉

    elias: du solltest dir wirklich erstmal ein paar Grundlagentutorials und/oder Bücher durchlesen. Was du hier bringst sind nichtmal Anfängerfehler, das ist einfach mangelndes Wissen.


Anmelden zum Antworten