Ich habe ein Problem, sagen wir, ich habe eine kontinuierliche while-Schleife, und im Inneren gibt es eine Variable x, die in einigen Berechnungen verwendet wird. Wie sende ich eine Eingabe von der Tastatur an die Schleife, um die Variable x innerhalb der Schleife zu ändern, ohne die Schleife in C++ zu stoppen? DankeWie senden Sie eine Eingabe in eine Endlosschleife? (C++)
Antwort
Wenn Sie Linux verwenden, verwenden Sie am besten ncurses. Die S-lang Bibliothek wird auch von einigen benutzt, aber ich habe keine Erfahrung damit. Multithreading ist nicht erforderlich.
Aber was ist mit Signalen? Kann ich Signale nicht verwenden, um die Variablen innerhalb einer bereits laufenden Schleife zu ändern? – chutsu
Natürlich könnten Sie wahrscheinlich SIGALRM verwenden, um die Tastatur abzufragen, aber warum nicht einfach die Tastatur aus der Schleife abfragen? – onemasse
Ihre beste Wette ist wahrscheinlich Multithreading, ein zweiter Thread könnte auf eine Tastatur warten.
Werfen Sie einen Blick auf boost/C++ für Details der Umsetzung: http://www.boost.org/doc/libs/1_43_0/doc/html/thread.html
IF Sie in Windows sind, können Sie GetAsyncKeyState
verwenden. (siehe: http://msdn.microsoft.com/en-us/library/ms646293(v=vs.85).aspx). Wenn nicht, funktioniert das natürlich nicht :)
Wenn es sich um Benutzer-Software handelt, würde ich mich für den Multi-Thread-Ansatz entscheiden, wie von smichaud erwähnt. Wenn es sich um ein Werkzeug handelt (und die Leistung kein Problem ist), könnten Sie kontinuierlich von einer Datei lesen und diese Datei von außen ändern, da dies die einfachste Implementierung ist.
- 1. So verhindern Sie eine Endlosschleife in ASP.net
- 2. Finden Sie eine Endlosschleife in Bearbeitung?
- 3. Endlosschleife in C++
- 4. Tomcat lief in eine Endlosschleife
- 5. * ngFor eine Endlosschleife in angular2
- 6. eine Endlosschleife verlassen?
- 7. Senden Sie eine Outlook-Besprechungsanfrage mit C#
- 8. C# - Wie erstelle ich eine nicht erkennbare Endlosschleife?
- 9. String Eingabe in eine Klassenvariable in C#
- 10. C++: Warum führt dieser Code eine Endlosschleife aus, wenn die Eingabe nicht ganzzahlig ist?
- 11. Eingabe/Ausgabe für eine Datei in C++
- 12. Wie senden Sie eine Patch-Anfrage von einem C# -Client?
- 13. Collatz Rekursion in C Endlosschleife
- 14. Wie erstelle ich eine optionale Eingabe für scanf in C?
- 15. Erhalten Sie eine Eingabe in Ruby
- 16. C++ Wie man eine Eingabe-Float-Variable für eine gültige Eingabe überprüft
- 17. C# Pfeiltasten Eingabe für eine Konsole App
- 18. C# schweben Endlosschleife
- 19. C#: Eingabe vom inaktiven Fenster senden
- 20. Wie nehme ich eine Zeileneingabe in C?
- 21. Wie kann Endlosschleife ersetzen?
- 22. Ist es möglich, GCC in eine Endlosschleife zu bringen?
- 23. Eine einfache 301 Redirect erstellt eine Endlosschleife in meinem Htaccess?
- 24. So senden Sie eine gepackte Struktur in C++ und erhalten Sie in C#
- 25. Warum geht mein Java-Code in eine Endlosschleife?
- 26. Wickeln Sie eine Erweiterungsmethode in C#
- 27. Ionic2: Wie wird eine Checkbox-Eingabe in eine Warnmeldung eingefügt?
- 28. eine Eingabe in eine Zeichenfolge in eine ganze Zahl
- 29. Geben Sie Eingabe in eine EXE-Datei aus einer Textdatei
- 30. Erfassen und senden Tastatur/Maus-Eingabe in C#
Sie möchten eine nicht blockierende Tastatureingabe. Ich denke, das hängt sehr vom Betriebssystem ab, also sollten Sie angeben, welche Plattform Sie verwenden. – onemasse
Könnten Sie nicht einfach irgendeine Art von Tastaturpuffer überprüfen oder in Ihrer Schleife unterbrechen? –
Ich laufe Linux – chutsu