Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Probleme mit getch()

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
03.04.2004, 13:45 Uhr
~MadBull34
Gast


Moinmoin!
Vorweg will ich gleich mal sagen, dass ich in Sachen Proggen noch ein ziemlicher Noob bin. Also bitte nicht gleich auf mich einschlagen. Wir basteln z. Zt. ne kleine Konsole, wo man sich auch einloggen muss. Ich kümmere mich gerade um die Passworteingabe. Ich habe da ein kleines Problem mit getch(). Das Wort "Passwort: " und die Sternchen des Passwortes werden erst angezeigt, wenn man mit Enter bestätigt. Soll aber nicht sein. Ich kann das nur umgehen, wenn ich endl zwischendrin einfüge. Das sieht aber blöd aus. Ich will ja das PW normal horizontal eingeben können und nicht vertikal. Hier ist mal der Code. Ich wäre echt dankbar, wenn mir jemand helfen könnte. Besten Dank im Vorraus!


C++:
#include <iostream.h>
#include <conio.h>
#include <fstream>
using namespace std;

char buchstabe;
string Pwd;
int main()
{
        cout << "Passwort: ";
        while(buchstabe != 13)
        {
                buchstabe = getch();

                if(buchstabe != 13)
                {
                        Pwd += buchstabe;
                        cout << '*'; //<-- Wenn ich hier noch "<< endl" anhänge, dann gehts
                }
        }
        return 0;
}



 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.04.2004, 13:55 Uhr
Spacelord
Hoffnungsloser Fall


cout und cin sind gepuffert. Du kannst mit flush den Puffer,ohne Zeilenumbruch, leeren.

C++:
cout<<'*'<<flush;


MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.04.2004, 13:57 Uhr
Pablo
Supertux
(Operator)


#include <conio.h>

das ist nicht ANSI! -->
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.04.2004, 14:02 Uhr
~MadBull34
Gast


@ Spacelord: Besten Dank für die schnelle Hilfe!

@ Pablo: Sorry, ich dachte, es wäre ANSI, weil es nur Texteingabe ist. Bin halt noch Noob. Vergebung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.04.2004, 14:04 Uhr
RedEagle



versuchs mal mit:
cout << "*";
Dass solte gehen
--
MFG RedEagle

Dieser Post wurde am 03.04.2004 um 14:05 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.04.2004, 14:05 Uhr
Spacelord
Hoffnungsloser Fall


@Pablo:
Sein Problem (gepufferte Stream's) und wann sich diese leeren,warum cerr nicht gepuffert ist und warum cin mit cout gekoppelt ist usw. ist aber durchaus Standard und hat unter WinApi mit Sicherheit garnichts zu suchen!!

@MadBull:
Du könntest anstelle von flush die Ausgabe auch mit cerr bewerkstelligen. cerr ist eigentlich zur Fehlerausgabe gedacht und nicht gepuffert.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 03.04.2004 um 14:05 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.04.2004, 14:17 Uhr
~MadBull34
Gast


flush und cerr (beides net gekannt) haben beide einwandfrei funktioniert. Besten Dank. Ich frage mich jetzt nur noch, warum ich Pwd nicht einfach ausgeben kann (wollte zur Kontrolle mal testen). Liegts daran, dass es ein String ist?


C++:
cout << Pwd; //<--funzt net
cout << Pwd[0]; //<--funzt zeigt aber nur ein Zeichen an



Muss ich das dann wirklich so umständlich machen und nen Zähler für die Anzahl der Zeichen mitlaufen lassen und dann ne Schleife (i=0,n) laufen lassen mit cout << Pwd[i]? Kann ich mir nicht vorstellen.
Sorry, ich weiß. Ist mein 3. Beitrag in diesem Forum und schon werde ich offtopic.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.04.2004, 14:23 Uhr
RedEagle



mit #include <string.h> müsstest du das normal ausgeben können (Nicht getestet)
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.04.2004, 14:26 Uhr
Spacelord
Hoffnungsloser Fall



Zitat:
RedEagle postete
mit #include <string.h> müsstest du das normal ausgeben können (Nicht getestet)

string.h ist ne alte Version. Besser string oder cstring,wobei cstring letztendlich auch nur string einbindet.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.04.2004, 14:26 Uhr
~MadBull34
Gast


Sorry. Beim Kompilieren kommt immer noch der Fehler. Es wird nur einwandfrei kompiliert, wenn ich ne Nummer in eckigen Klammern hinten dran setze.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: