# Zeichen aus Konsolenfenster einlesen



## Drache2 (22. September 2007)

Hi.
Hab da mal ne Frage.
Habe  auch schon gesucht, auch fündig geworden, nur, versteh ich das dann nicht so ganz.
Also wollt ich fragen, ob es eine Einfache, efektive, möglichkeit gibt (dioe es ja gibt), wie man im Konsolenfenster ausgegebene Zeichen wieder vom Konsolenfenster einlesen kann.
Hoffe es kann mir wer ziemlich deutlich und asuführlich erklären.
Wichtig ist auch, wie ich die dann wieder ausgeben kann!


----------



## Tyg3r (22. September 2007)

Hi,


```
#include <iostream>
using namespace std;

int main()
{
    // ausgabe in variable
    std::string ausgabe = "hallo World";

    // in Konsole
    std::cout << "Hier die Augabe (bei <Enter> kann im Script mit der 'ausgabe' weiter gearbeitet werden):" << ausgabe << std::endl;

    // hier mit der variablen ausgabe weiterarbeiten
    .....
}
```

Falls ich Deine Frage richtig verstanden habe, ist das die Antwort dazu 

Gruß tyg3r


----------



## Drache2 (22. September 2007)

Lao, entweder hast du meine F4rage nich verstanden oxder ich deine Nastwort nicht.

z.B. von dem Ausgegeben Hello World.

Nun möchte ich sagenwa mal, den 2. Buschstaben (l) also(Koordinate(1,0)) einlesen und in einer vopnmir definbierten Varible (sagenwa mal c) abspeichern.

Diese möchte ich dann eibnfach per cout<<c<<endl; aufrufeb können.


----------



## Tyg3r (22. September 2007)

Hmmm wieso willst du das Konsolen-Fenster auswerten?
Die Konsole ist ja nur der "Übersetzer" für den Anwender ...

Alles was Du vom Programm aus in die Konsole schreibst ist dir ja zuvor bekannt (kannst also damit arbeiten).

Und wenn der Benutzer etwas in die Konsole eingibt kannst Du es ebenso verarbeiten:

```
std::string = eingabe;
std::cin >> eingabe;
```

Dein Problem verstehe ich also leider nicht ganz


----------



## Drache2 (22. September 2007)

nene. die Sache ist die.

Ich habe keine lust das gnaze Fenster in einer Stringvariable zu speichern.

Und wenn ich über ein Feld rübergehe, will ich das einlesen und das denn mit anderen Farbeinstellungen da wieder ausgeben.desswegen.

z.b. Ixch habe da den TText: Hello World stehen. Ich gehe mit der Maus darüber. nun möchte ich aber auch sehen, das ioch dadrüber bin.
also lese ich das Zeichen von der Konsole ein und schreibe es nochmal mit anderen Farbeinstellungen aus /(z.B. Grün). Wenn ich denn wieder woanders bin mit der Maus, solls auch wieder nbnormal wedren (das ist dann eig weniger das Problem).
Und wen das denn z.B. n Auswahlmenue werden soll, mit vielen Zeichen. Ich hoffe du verstehst...


----------



## Drache2 (22. September 2007)

abe jetzt was einfaches gefunden.


```
bool Zeicheneinlesen(int x, int y, char& character) {

          CHAR_INFO buffer;
          COORD bufferSize = {1, 1};
          COORD bufferCoord = {0, 0};
          SMALL_RECT region = {x, y, x, y};
          if(ReadConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE), &buffer, bufferSize, bufferCoord, &region ) == 0)
            return false;
          else {
            character = buffer.Char.AsciiChar;
            return true;
          }
        }
```

funktioniert einwandfrei.

Nur, wie kann ich jezt noch die Farbe des Zeichens auslesen?


----------

