Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Konsola, a bufor

Ostatnio zmodyfikowano 2012-04-26 19:18
Autor Wiadomość
DuMaM
Temat założony przez niniejszego użytkownika
[C++] Konsola, a bufor
» 2012-04-26 14:21:57
Witam

Potrzebuję pomocy przy funkcjach cin'a. Zrobiłem sobie kawałek kodu, który operuje menu w konsoli za pomocą klawiatury numerycznej np. 1 to robi coś tam, 2 to robi coś tam. Udało mi się to napisać w taki sposób by nie było widać znaku, który się wprowadza z bufora klawiatury, przy odpowiednim operowaniu funkcją getch() z biblioteki conio.h(rzutowanie itp itd). Wszystko było by fajnie, gdyby nie fakt, że kompilatory w laboratorium, gdzie zdaję projekt nie mają tej biblioteki...
I mój problem polega na tym, że muszę znaleźć zamiennik funkcji getch(), bądź wyłuskać jej definicję bezpośrednio z biblioteki conio.h. A po długich próbach poszukiwań nie znalazłem żadnej wersji kodu, która by mi pozwoliła osiągnąć ten sam efekt.
Sądzę, że może bo być jakaś funkcja cin'a z odpowiednią flagą, lecz nie mam pojęcia jaką...

Za pewnie padnie pomysł weź wszystkie biblioteki Borlanda do laboratorium, ale to też odpada. Dodam jeszcze, że to będzie pisane pod Unixa, korzystając z bibliotek kompilatora g++.

Proszę o pomoc ;]
P-55388
Admixior
» 2012-04-26 15:51:32
Sam nie pisze pod linuxem i rzadko kiedy miałem taką sposobność.
Czytałem na necie że ta funkcja jest w stdio.h. Jak nie będzie to taki kod też znalazłem:
C/C++
#include <iostream>
#include <stdio.h>
#include <termios.h>
#include <unistd.h>

using namespace std;

int mygetch()
{
    struct termios oldt,
    newt;
    int ch;
    tcgetattr( STDIN_FILENO, & oldt );
    newt = oldt;
    newt.c_lflag &= ~( ICANON | ECHO );
    tcsetattr( STDIN_FILENO, TCSANOW, & newt );
    ch = getchar();
    tcsetattr( STDIN_FILENO, TCSANOW, & oldt );
    return ch;
}

int main()
{
    cout << "Naciśnij dowolny klawisz\n";
    mygetch();
    return 0;
}
P-55417
DuMaM
Temat założony przez niniejszego użytkownika
» 2012-04-26 16:23:14
hym...
1. Getch() nie należy do tej biblioteki, a szkoda.
2. Zdziwiłem się, bo na winie mi nie kompilowało, ale jak wrzuciłem na uniksa to poszło. Tylko, że nie wiem dokładnie co się tam dzieje? Fakt faktem nie wyświetla niczego podczas wprowadzania znaku, ale też nie wiem jak ten znak przypisać zmiennej/czemukolwiek.

A z tego co widzę to zwraca inta więc "int zmienna=mygetch()" powinno zadziałać i przypisać wartość zwracaną a tak nie jest...

Mógłbyś podrzucić linka skąd go masz?
P-55421
Admixior
» 2012-04-26 18:16:01
Sorry że tak późno ale wcześniej nie siedziałem.
to jest link http://debian.linux.pl/threads/16081-Funkcja-getch()-w-C
P-55433
DuMaM
Temat założony przez niniejszego użytkownika
» 2012-04-26 19:18:37
Faza widziałem ten link, ale nie zwróciłem uwagi na to.
Tak czy siak kod nie spełnia swej funkcji. Ale sądzę że dzięki bibliotece termios.h uda coś mi się wykombinować ;]
Słyszałem że może w ncurses.h znajdę ciekawe rozwiązanie(wie ktoś?).

Lecz jeśli jest osoba, która zna rozwiązanie, które byłoby bardziej uniwersalne to się nie obrażę jak pomoże.
P-55448
« 1 »
  Strona 1 z 1