C++ Wörter eingeben und dementsprechend handeln

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

So funktioniert das nicht mit einem C-String. Dafür musst du entweder die Stringbibliothek einbinden und einen String einlesen, den kannst du dann mit einem Gleichheitsoperator vergleichen, ansonsten eben strcmp.

Eine mögliche Lösung wäre z.B:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string eingabe;
    cout << "Ihre Eingabe: ";
    getline(cin, eingabe);
    if (eingabe == "Test" || eingabe == "test") {
        cout << "Bingo!";
    } else {
        cout << "Fail!";
    }
    return 0;
}
0
@apachy

An sich funktioniert es. Jedoch möchte ich ein Wort in einem Menü eingeben was mit Zahlen navigiert. Das heißt, man wählt eine Zahl aus und darauf folgt eine Switchfunktion, die die ganzen Zahlen abfragt. Wie bekomm ich jetzt beides unter einem Hut? Weil den string "Eingabe" kann ich ja nicht im switch nutzen.

0
@Pischi

Irgendwie kann ich dir gerade nicht ganz folgen. Du möchtest ein Wort eingeben aber es navigiert mit Zahlen? Was nun? Oder soll es eine Möglichkeit geben ein Menupunkt via Text oder seiner Nummer anzusprechen.

Etwas genauere Erklärung bitte. Insgesamt hört sich Wörter und Switch für mich aber eher nach Enum an, als nach einem Stringproblem.

0
@apachy

Also ich arbeite ja in der Konsole und ich arbeite gerade an einem Programm, welches alles mögliche mit Zahlen macht. D.h. alle verschiedene möglichen Rechnungen. So und in dem Menü wo man die Punkte 0-9 wählen kann was ungefähr so aufgebaut ist: cout << "Menü: 1 = Addieren - 2 = Subrahieren" << endl; cin >> zahl;

switch (zahl)
{
    case '1':
        Addition();
    break;
       case '2':
        Subtraktion();
        break;
}

So ist das aufgebaut. Und in so einem Menü möchte ich jetzt ein Wort eingeben. Dieses Wort soll dann mich zu einer Funktion bringen. Also eigentlich wie eine Zahl. Ich hoffe das ist etwas verständlicher.

0
@Pischi

Nun dann verzichtest du auf switch/case und nimmst if/else oder schaust dir mal Map-Container an, damit sollte das ebenfalls machbar sein. Switch will nunmal ein Int haben.

0

http://linux.die.net/man/3/strcmp

Was du vergleichst sind die Adressen der einzelnen Strings (ein 0-terminierter String in C ist ein Pointer auf eine char-sequenz, die mit '\0' endet)

Allerdings ist das was du da hast auch kein echtes C++, das ist ein Mutant aus C und C++. informiere dich mal an der Stelle über std::string.

Btw: mit ' schließt man char ein, mit " strings (bzw. char*, was einem C-string entspricht). Nicht sicher ob dass der Compiler trotzdem verkraftet, aber selbst wenn er das tut wäre es ein schlechter Stil.

Schau dir mal auf youtube tutorials an. ich glaub, das ist momentan effektiver ;)

C++ String mit samt leerzeichen einlesen!?

Hallo zusammen. Ich möchte jetzt in einem c++ programm einen, bzw. mehrere strings MIT leerzeichen einlesen. Mit cin >> xyz geht es ja definitiv nicht. mit getline(cin, xyz) soll es ja wohl gehen. doch habe ich da folgendes problem: die eingabe für die variable, also die mit getline aufgerufen wird WIRD EINFACH ÜBERSPRUNGEN!!! Hier der Code. Bitte helft mir danke schonmal

cout << "Welcome to C++ Filecompiler using G++ !\nThis app is proudly presented by Armin Linzbauer, Copyright 2012." << endl;
cout << "\nFirst, this app is going to collect some basic information...\n(Write paths ALWAYS in quotationmarks!!!\n" << endl;

cout << "\nName of source file, type 0 for standard (\"main.cpp\") -" << "\nName: ";
cin >> sourceName;

cout << "Source path (must end with a slash), type 0 for standard (this directory) -" << "\nPath: ";
getline(cin, sourcePath);
//cin >> sourcePath;

cout << "Name target file here, type 0 for standard (\"app\") -" << "\nName: ";
cin >> targetName;

cout << "Target path (must end with a slash), type 0 for standard (this directory) -" << "\nPath: ";
getline(cin, targetPath);
//cin >> targetPath;

cout << sourceName << "; " << sourcePath << "; " << targetName << "; " << targetPath << endl;
cout << matchedSource << endl;
cout << matchedTarget[1] << endl;
cout << matchedTarget[0] << endl;
cout << matchedSrcTgt << endl;

sorry für die &lt und &gt... ich weiß net wie ich die wegbekomme hier im editor!

...zur Frage

Bei jeder Eingabe des Commands andere Sachen ausführen. (Geht das)?

Hallo,

wenn man "/next" eingibt, dann kommt kommt z.B. ein Text mit der Nachricht: "Next1" und wenn man "/next" nochmal eingibt dann "Next2", kann man das irgendwie programmieren?

...zur Frage

If-Else in eine Schleife binden(z.b while Schleife)(C++)?

Ich versuche die ganze Zeit if-Else in eine Schleife ein zu binden. So das der Benutzer nach der Eingabe nochmal das Gewünschte Eingibt(Alter).Aber irgendwie geht das nicht. Anstatt das die Zeile sich wiederholt wo der Benutzer sein Alter bestätigen muss, wird immer der eingegebene Alter wiederholt. Also wie schaffe ich es, das der Benutzer mit einer Schleife nach der Eingabe,noch mal sein Alter bestätigen muss. (Ich bin noch ein Anfänger)

Screenshot ist unten:

...zur Frage

Javascript: Textfelder hinzufügen sobald alle voll, wie geht das?

ich habe hier 4 Eingabe felder :

<label for="antwort1">
    <input type="text" name="antwort1" class="form-control" style="text-align: center" placeholder="Antwortmöglichkeit" maxlength="64" size="50%" required>
</label><br>
<label for="antwort2">
    <input type="text" name="antwort2" class="form-control" style="text-align: center" placeholder="Antwortmöglichkeit" maxlength="64" size="50%" required>
</label><br>
<label for="antwort3">
    <input type="text" name="antwort3" class="form-control" style="text-align: center" placeholder="Antwortmöglichkeit" maxlength="64" size="50%">
</label><br>
<label for="antwort4">
    <input type="text" name="antwort4" class="form-control" style="text-align: center" placeholder="Antwortmöglichkeit" maxlength="64" size="50%">
</label><br>

wie mache ich das dass man beim letzten das 1. zeichen eingibt darunter ein weiteres feld erscheint mit name "antwort5" und label "antwort6" und sobald man da was eingibt kommt wieder ein neues mit antwort7 und so weiter, bis maximal 8 felder da sind ? kann das jemand mir machen oder so ? danke

...zur Frage

C++ Wie kann ich den Benutzter eine Rechenart auswählen lassen. (Konsolen Anwendung)

Also ich bin dabei C++ zu lernen und ich habe schon selber versucht das dass Problem mit einer char Variable zu lösen und dann mehrere if abfragen zu erstellen aber dass funktioniert nicht ganz, außerdem ist es eine Konsolen Anwendung.Kann mir jemand helfen ?

#include <iostream>

using namespace std;

int main(){
char Rechenart;
int Summe1, Summe2, Ergebnis;

cout << "Mit welcher Rechenart wollen sie Rechnen(Multiplikation*)(Divison/)(Addition+)(Subtraktion-)";
cin >> Rechenart;
cout << "Benutzereingabe:";
cin  >> Summe1;
cout << "Benutzereingabe:";
cin  >> Summe2;

Ergebnis = Summe1 * Summe2;

getchar();

std::cout << Summe1 << Rechenart << Summe2
    << " = "
    << Ergebnis
    << std::endl;

if (true)
{
 
}

else
{

}

getchar();
return 0;
}
...zur Frage

notenauswertung in c++? :S

Aufgabenstellung: Notendurchschnitt angeben anzahl der jeweiligen noten angeben(notenspiegel) kann mir einer von euch helfen? //--------------------------------------------------------------------------- int main(int argc, char* argv[])

{

    char note;

    int anzahl = 0;

    clrscr();
    cout<<"Notenauswertung -Klasse - Autor - Datum\n";
    cout<<"Die Noten als Zahl 1..6 eingeben: \n";


    //---------------------Wiederholschleife------------------------------
    do
    {
            note = getche();
            if (note == '1')   cout<<"-sehr gut             \n";
            if (note == '2')   cout<<"-gut                  \n";
            if (note == '3')   cout<<"-befriedigend        \n";
            if (note == '4')   cout<<"-ausreichend         \n";
            if (note == '5')   cout<<"-mangelhaft          \n";
            if (note == '6')   cout<<"-ungenuegend         \n";
            if ((note<'1')||(note>'6')) cout<<"-Falsche eingabe"<<endl;
    }
   while (note != 27);

    //--------------Noten durchschnitt berechnen---------------------------

    {

    }

    // getch();
    return 0;

}

...zur Frage

Was möchtest Du wissen?