![]() |
[C++] Problem bei Stringverleich
Morgen.
Ich hab einen char op; und will den mit Stringkonstanten vergleichen. Der Compiler meckert aber dort:
Code:
Die Fehlermeldung: ISO C++ forbids comparison between pointer and integer
if(op=="+"||op=="-"||op=="*"||op=="/") break;
Wenn ich statt char op; char op[1]; schreibe (ist ja maximal ein Zeichen lang) dann ist die Bedingung immer false. |
Re: [C++] Problem bei Stringverleich
In C unterscheidet sich ein Char von einem string auch in der schreibweise:
Code:
Ein einfaches Hochkomma verwenden dürfte also helfen ;)
//String:
"Dies ist ein String" //Char 'c' Zitat:
greetz Mike Edit: Zitat:
|
Re: [C++] Problem bei Stringverleich
Klammern.
Code:
Von Java weiß ich zwar, dass == stärker bindet als ||, allerdings weiß ich nicht, wie das bei C++ ist. Also würde ich mal davon ausgehen, dass C++ hier eine korrekte Klammerung erfordert.
if( (op=="+") || (op=="-") || (op=="*") || (op=="/") ) break;
Chris [edit]Och Mist... -.- Der blöde Info-1-Student aus München war schneller und richtiger als ich. :wall:[/edit] |
Re: [C++] Problem bei Stringverleich
OK, hier mal mein ganzer Code, funzt nämlich immer noch nicht. Und == hat Vorrang vor ||.
Code:
#include <iostream.h>
#include <stdio.h> int main(void){ char op[1]; int oprnd1, oprnd2, result; while(true){ cout<<"Bitte geben sie einen arithmetischen Operator ein: "; cin>>op; if(op=='+'||op=='-'||op=='*'||op=='/') break; cout<<"Ungültiger Operator: "<<op<<"\n"; } cout<<"Bitte geben sie den ersten Operanden ein: "; cin>>oprnd1; cout<<"Bitte geben sie den zweiten Operanden ein: "; cin>>oprnd2; if(op=="+") cout<<oprnd1<<"+"<<oprnd2<<"="<<oprnd1+oprnd2; if(op=="-") cout<<oprnd1<<"-"<<oprnd2<<"="<<oprnd1-oprnd2; if(op=="*") cout<<oprnd1<<"*"<<oprnd2<<"="<<oprnd1*oprnd2; if(op=="/") cout<<oprnd1<<"/"<<oprnd2<<"="<<oprnd1/oprnd2; getchar(); } |
Re: [C++] Problem bei Stringverleich
Code:
while(eingabe)
{ cout<<"Bitte geben sie einen arithmetischen Operator ein: "; cin>>op; switch(op) { case '+': case '-': case '*': case '/': eingabe = false; break; default: cout<<"Ungültiger Operator: "<<op<< endl; break; } } |
Re: [C++] Problem bei Stringverleich
dann machs halt mit strcmp( OP, "+" )
|
Re: [C++] Problem bei Stringverleich
Teste ich wann anderes mal, heute habe ich irgendwie keine Lust mehr...
|
Re: [C++] Problem bei Stringverleich
char op; und nich char op[1];
zweites dekalriert einen Zeiger auf char also char* |
Re: [C++] Problem bei Stringverleich
Aha. Ich checke das zwar immer noch ned so ganz, aber egal.
|
Re: [C++] Problem bei Stringverleich
Naja C/C++ ist zum Teil nich ganz easy, wenn man Delphi gewohnt ist :)
Also etwa so:
Code:
int main(void)
{ char op; int oprnd1, oprnd2; while(true) { cout << "Bitte geben sie einen arithmetischen Operator ein: "; cin >> op; if(op == '+' || op == '-' || op== '*' || op == '/') break; cout << "Ungültiger Operator: " << op << "\n"; } cout << "Bitte geben sie den ersten Operanden ein: "; cin >> oprnd1; cout << "Bitte geben sie den zweiten Operanden ein: "; cin >> oprnd2; switch(op) { case '+': cout << oprnd1 << "+" << oprnd2 << "=" << (oprnd1 + oprnd2); break; case '-': cout << oprnd1 << "-" << oprnd2 << "=" << (oprnd1 - oprnd2); break; case '*': cout << oprnd1 << "*" << oprnd2 << "=" << (oprnd1 * oprnd2); break; case '/': cout << oprnd1 << "/" << oprnd2 << "=" << (oprnd1 / oprnd2); break; } getchar(); } Wobei noch zu erwähnen wäre, das du bei "/" wohl die Operanten nach double casten mußt, sonst gibts keine exakten Ergebnisse.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz