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

2010-06-25T01:58:47Z

@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!

2010-06-25T02:03:27Z

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?

2010-06-25T03:42:53Z

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

2010-06-25T03:47:46Z

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;
}

Quasimodos Klon2010-06-25T01:43:10Z

Beste 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:_Einfache_Ein-_und_Ausgabe#getchar_und_putchar
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.