Keine cout-Ausgabe in Schleife

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Keine cout-Ausgabe in Schleife

    Ich finde hier einfach den Fehler nicht!

    Quellcode

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. int main () {
    5. cout << "string-editor programmed by Nicki Promies.\n";
    6. cout << "Use <help> to get help.\n\n";
    7. string String = "";
    8. while (String == "") {
    9. cout << "No string entered, enter a string:\n";
    10. cin >> String;
    11. }
    12. int Endblinker;
    13. cin >> Endblinker;
    14. }
    Alles anzeigen


    Wenn man nichts eingibt und einfach nur Entered,
    soll wieder kommen "No string entered, enter a string".
    Die Eingabe kommt wieder jedesmal nach Entern von
    nichts, der Character out da jedoch nicht!
    Kann mir jemand helfen?

    Ich kann auch diesen Code nicht kompilieren:

    Quellcode

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. // ..... Variablen definieren
    5. string command;
    6. string Entered;
    7. // ..... Funktionen definieren
    8. void enterString (string Param) {
    9. Entered = Param;
    10. cout << "<entered sring> " << Param;
    11. }
    12. int main () {
    13. cout << "string-editor2.\n";
    14. cout << "Use <help> to get help.\n\n";
    15. // ..... Funktion enterString wird zuerst einmal ausgelöst mit
    16. // ..... dem Parameter (hier künstliche Eingabe) Kaese
    17. enteredString ("Kaese");
    18. int Endblinker;
    19. cin >> Endblinker;
    20. }
    Alles anzeigen


    Der Compiler zeigt einen Fehler in Line 20!

    Edit

    Problem 2 wäre gelöst, ich habe mich bloß vertippt
    Entered und Enter, sorry. Problem 1 ist abr noch da...
  • Also willst du wissen wann der String leer ist?
    Das geht mit String.size().
    aber cin alleine übernimmt einiges mit in den String (\r\n glaub ich...bin mir aber nicht sicher) sodass du den String mit den Sachen initialisieren musst die cin mit in die Zeichenkette schreibt. Sonst springt er nicht in die Schleife.
    Würd ich nicht machen ;)
    Da würde sich getline() anbieten, du willst ja auch die string-Klasse benutzen.
    Damit das aber mit getline läuft brauchst du ein char array, also legen wir ein temporäres an.
    Das ganze sieht dann so aus:

    Quellcode

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. int main () {
    5. cout << "string-editor programmed by Nicki Promies.\n";
    6. cout << "Use <help> to get help.\n\n";
    7. string String = "";
    8. char temp[100]; // 100 Zeichen müssten reichen.
    9. while (String.size() == 0) {
    10. cout << "No string entered, enter a string:\n";
    11. cin.getline(temp, 100); // maximal 100 Zeichen einlesen
    12. String = temp;
    13. }
    14. int Endblinker;
    15. cin >> Endblinker;
    16. return 0;
    17. }
    Alles anzeigen