Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo, ich bin's nochmal...

weil's mir mit der sstream-Headerdatei und den Problemen, die's dadurch gab (siehe letztes Posting) echt irgendwann zu blöd wurde und ich keine Lust hatte, mein Programm nochmal ziemlich komplett umzubauen - wer hätte geahnt, dass das so "tiefgreifend" ist?! - hab ich mich für folgendes entschieden:


#include <iostream>

#include <conio.h>

#include <fstream.h>


void main()

{

ofstream datei;

datei.open("D:\\text.dat",ios::out|ios::nocreate|ios::binary, filebuf::sh_write);


char ReadNow = 'a';

cout<<"eingabe:"<<endl;

while ( ( ReadNow = getch() ) && ( ReadNow != '\r' ) )

{

	datei<<ReadNow;

}


 datei.close();


};


und hinterher greif ich eben direkt auf die Datei zu (ohne Umweg über sstream bzw. string vorher und hinterher).

Eigentlich anders als geplant, aber so komm ich auch ans Ziel.

Nun ist es natürlich noch etwas unschön, dass der Benutzer nicht sieht, was er eintippt (die Zeichen werden zwar in die Datei gelesen, aber während des Tippens nicht auf dem Bildschirm dargestellt).

Das ist sicherlich nur eine kleine Änderung - aber wo liegt mein Fehler? :confused:

Vielen Dank für eure Hilfe!

Grüße,

Technician

P.S.: Hab einen neuen Thread aufgemacht, weil's mit dem anderen eigentlich nix mehr zu tun hat.

Jo mann is doch klar...

getch() liest nur ein zeichen von der Tastatur und zeigt es nicht

an.

Also musst du das eingegebene Zeichen auch ausgeben lassen:

////////////////////////////////////

#include <iostream>

#include <conio.h>

#include <fstream.h>

void main()

{

ofstream datei;

datei.open("D:\\text.dat",ios::out|ios::nocreate|ios::binary, filebuf::sh_write);

char ReadNow = 'a';

cout<<"eingabe:"<<endl;

while ( ( ReadNow = getch() ) && ( ReadNow != '\r' ) )

{

printf("%c", ReadNow);

datei<<ReadNow;

}

datei.close();

};

/////////////////////////////////////////

@Klotzkopp

Danke!:):):)

ich hatte schon ähnliches ausprobiert, aber damit nur ein "Datengewurschtele" erzielt.

weiß auch nicht, hatte ich wohl mir irgendwas falsch gemerkt - dachte doch tatsächlich, getch würde das eingegebene auch anzeigen...:rolleyes:

Technician

Original geschrieben von Klotzkopp

Bedank Dich bei Hoppo, ich hab doch wieder nur rumgemäkelt ;)

hättest es aber wohl auch gewusst ;):)

Hi,

wie wäre es, wenn Du anstatt "getch()" einfach "getche()" benutzt. Das "e" steht, glaube ich, für "echo" und gibt das Zeichen, welches eingegeben wird gleichzeitig auf dem Bildschirm aus.

Grüsse

DocMabuse

Original geschrieben von DocMabuse

Hi,

wie wäre es, wenn Du anstatt "getch()" einfach "getche()" benutzt. Das "e" steht, glaube ich, für "echo" und gibt das Zeichen, welches eingegeben wird gleichzeitig auf dem Bildschirm aus.

Grüsse

DocMabuse

Ja... vielleicht war's ja das, was ich noch irgendwie von ferne und verschwommen in Erinnerung hatte...

Wenn das so geht, ist es natürlich besser als getch()!

Gruß,

Technician

Mit getche() erschient aber nicht der Inhalt der Variablen in der Du die EIngabe gespeichert hast, sonder nur das was Du bei 'cin >>' auch auf dem Bildschirm sehen würdest, nämlich was eingegeben wird, nicht wurde!

Bine

Original geschrieben von Woodstock

Mit getche() erschient aber nicht der Inhalt der Variablen in der Du die EIngabe gespeichert hast, sonder nur das was Du bei 'cin >>' auch auf dem Bildschirm sehen würdest, nämlich was eingegeben wird, nicht wurde!

Bine

Korrekt, es wird immer das Zeichen angezeigt und gespeichert, welches gerade in dem Moment eingegeben wurde. So wie ich das sehe wird aber auch in eine Variable vom Typ "char" gespeichert, welche sowieso nur ein Zeichen aufnehmen kann. Sehe ich das falsch?

DocMabuse

Hmm, eigentlich wird das ganze in einem integer gespeichert!

Bine

:confused: Wie jetzt? :confused:

Also die folgende Zeile...

char ReadNow = 'a';

...sieht für mich verdammt nach 'ner Variable vom Typ "char" aus, oder nicht? Sollte ich mich bisher immer geirrt haben? Fällt mein Weltbild tatsächlich in sich zusammen?! :eek: ;)

Bitte um Aufklärung! :) Kann ja sein, dass ich mal wieder auf der Leitung stehe...

DocMabuse

Original geschrieben von Daragon

Aber erklär erstmal was du vorhast, aber

bitte keinen Source, sondern bitte

erklären, ich denke dann können wir dir

besser weiter helfen!!!

Danke - funktioniert jetzt alles prima!

getche() hat nicht das gebracht was ich wollte (soll heißen, nach dem ENTER war die Eingabe wieder vom Bildschirm weg) - also mach ich das ganze jetzt mit getch() und geb dann zeichenweise wieder aus.

(Mein ursprüngliches Problem war, einen beliebig langen Text von Tastatur einzulesen und das dann in einer Textdatei oder einer Variablen abzulegen.)

Aber wie gesagt, jetzt funktionierts (und der Thread kann, meinetwegen, auch zugemacht werden).

Danke nochmal für eure Mühe!

Gruß,

Technician

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.