Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.
Fragen zu C++! Bitte helft mir!?
Hey!
Ich mache hier gerade mein (Schüler- ) Praktikum und bin gerade dabei ein kleines Programm zu schreiben. Der Code sieht bisher so aus:
char Input;
string Path;
std::cout << "Programm-Name" << std::endl
<< "===============" << std::endl << std::endl
<< "Please select:" << std::endl
<< "1. Auswahl 1" << std::endl
<< "2. Quit" << std::endl;
std::cin >> Input;
std::cout << "Input was: " << Input << std::endl << std::endl;
// Hier würde ich eigentlich dann gerne “Input was: ‚Eingabe’“ stehen haben (also das das Input gleich hinter „Input was“ geschrieben wird. Was muss ich statt des „std::endl;“ hinschreiben, damit man das gleich dahinter schreiben kann?
if (Input=1) {
std::cout << "Programm-Name" << std::endl
<< "===============" << std::endl << std::endl
<< "Please specify file path:" << std::endl;
std::getline(cin, Path);
// (Hier bin ich noch nicht fertig aber damit sollte ich auch kein Problem haben...)
}
else {
std::cout << "Beendet" << std::endl;
}
Mir hat nie jemand beigebracht wie man es hinbekommt, dass, wenn jemand z.B. "1" + "ENTER" drückt, die alte schrift verschwindet und er wieder oben anfängt zu schreiben. Mein Chef will von mir, dass das nicht unendlich lang wird sondern dass es nach der Eingabe oben wieder anfängt. Ich hoffe ihr wisst was ich meine.
Und was muss ich eingeben damit er bei "2" + "Enter" auch Quit machen? Wie ist der Befehl um das Programm zu beenden?
Außerdem habe ich ein Problem mit der Eingabe. Wenn ich z.B. „1“ + „ENTER“ eingegeben habe und er dann nach dem Path fragt, kann ich nichts mehr eingeben. Was genau muss ich machen admit ich überhaupt irgendetwas schreiben kann?
Ich weiß die Fragen sind eher Anfänger-Probleme, aber um ehrlich zu sein bin ich das auch noch :D
Also nicht lachen, helft mir lieber, dann werd ich auch schlauer und besser ;)
Danke,
MoneyMan
@Quasimodos Klon Danke das mit der Eingabe hat super geklappt :D String habe ich hier aus einem C++ Buch. Da steht. Die Eingabe von Strings unterscheidet sich nicht von der Eingabe von Zahlen.
Ich wollte, dass man dort als Eingabe den ganzen Pfad (also D:\Test\Cpp\Test1/Datei.datei) eingeben kann und er den dann an eine andere Operation weitergibt, die dann diese Datei ausliest und verarbeitet. Den rest habe ich schon, er fehlt eben nur noch die Benutzeroberfläche...
Mein größtes Problem ist eben das neue Fenste, also das er wieder oben anfängt!
ok... danke das zweite hat mir auch weiter geholfen, das habe ich gar nicht gemerkt. Kann man denn auch nur 2 Zeichen zulassen, also 1 und 2? Oder geht das nicht?
Bildschirm löschen, da gab's glaube ich ein
clrscr();
- Google sagt ja, und zwar in der Bibliothek
#include <conio.h>
also das hat leider nicht funktioniert... da kommt ne fehlermeldung:
In file included from Test.cpp:88:
../../../../include/conio.h: In member function `void TestManager::Menu()':
../../../../include/conio.h:21: error: expected unqualified-id before string constant
CGTManager.cpp:108: error: `clrscr' was not declared in this scope
CGTManager.cpp:117: error: `clrscr' was not declared in this scope
make: *** Error 1
hm ich hab das mit dem 1 oder 2 jetzt so gelöst... ist vielleicht nicht die eleganteste methode aber sie scheint zu funktionieren...:
if (Input == '1' ){
clrscr(); // das geht leider nicht
std::cout << "Programm" << std::endl
<< "===============" << std::endl << std::endl
<< "Please specify file path:" << std::endl;
string Path;
getline(cin, Path);
}
if (Input == '2') {
clear();
std::cout << "Beendet" << std::endl;
}
else {
std::cout << "Error! Wrong input. Only 1 or 2 are accepted!" << std::endl;
}
1 Antwort
- Quasimodos KlonLv 6vor 1 JahrzehntBeste Antwort
C ist lange her, aber...
std::cin >> Input;
std::cout << "Input was: " << Input << std::endl << std::endl;
sieht so aus, als würde zuerst die Eingabe erfolgen, danach erst der Prompt samt Eingabevariable ausgegeben.
Probiere:
std::cout << "Input was: ";
std::cin >> Input;
std::cout << std::endl << std::endl;
Datentyp string kenne ich gar nicht in C, nur char* und CString. Weiß nicht, wie sich string verhält (scheint ja bei Dir zu funktionieren, Compiler meckert zumindest nicht).
Path sollte eigentlich genauso mit cin>>Path einzulesen sein, zumindest beim Datentyp char*.
__
Noch was: Soweit ich mich erinnere, ist bei C genau wie bei fast allen anderen Sprachen = eine Zuweisung und == ein Vergleich.
if(Input = 1) dürfte also immer den if-Zweig ausführen, weil erst die 1 zugewiesen wird und dann ein Wert ungleich 0 als TRUE ausgewertet wird.
Außerdem ist Input vom Datentyp char und '1' ist gleich Integer 49 (ASCII-Zeichencode). Also dürfte
if (Input == '1')
funktionieren.
__
Bildschirm löschen, da gab's glaube ich ein
clrscr();
- Google sagt ja, und zwar in der Bibliothek
#include <conio.h>
__
Oh, nun wird's aber kompliziert. Sicherlich wird's an der Konsole eine Funktion oder ein Konstrukt geben, wodurch ein einzelnes Zeichen aus dem Tastaturpuffer eingelesen wird. Das wird man dann mit cout selber ausgeben müssen (und vorher auf Gültigkeit prüfen). Aber so genau kenne ich da gerad keinen Befehl mehr. ist schon zu lange her.
- Jepp, siehe Wiki:
http://de.wikibooks.org/wiki/C-Programmierung:_Ein...
Das ganze dann in einer while-Schleife bis Bedingung erfüllt.
War bei C glaube:
do
{ Input = getchar();
}
while (Input == '1' || Input == '2');
cout >> Input; //oder putchar(Input);
Die Variable ist im Wiki-Beispiel vom Typ int.
__
Und noch was zum Stil: Bei C/C++ ist die Konvention Variablen- und Funktionsnamen in kleinBeginnendemCamelCase üblich. Sollte man sich möglichst stilgerecht dran halten, besonders in Teams.
Quelle(n): C/C++ Erfarhung von Anno Dazumal