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; //richtigmfg 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:
- 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.