Форум русскоязычного сообщества Ubuntu


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

Автор Тема: аналог функции getche() в gcc  (Прочитано 2259 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн s_lim

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
аналог функции getche() в gcc
« : 29 Апрель 2010, 12:47:20 »
кто подскажет какой в g++ имеется аналог функции getche() из хидера conio.h?
Ubuntu 10.04.3 LTS Lucid Lynx (amd64)
AMD Phenome II x6; AMD 890GX; ATI Radeon HD4290; GDDR3 1600

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #1 : 29 Апрель 2010, 12:54:32 »
http://www.cplusplus.com/reference/iostream/istream/get/

std::istream& std::istream::get ( char& c );

Экземпляр класса std::istream который работает с STDIN как известно std::cin

Оффлайн DnSL48

  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #2 : 29 Апрель 2010, 12:55:47 »
Учите потоки. Это просто и удобно.
ArchLinux x86_64

Оффлайн s_lim

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #3 : 29 Апрель 2010, 12:59:06 »
VestniK
а как эту функцию в код вставить? какой заголовочный файл добавить?

С++ только начинаю учить, просто книга по которой учусь с виндовскими листингами вот и пытаюсь решить проблемы с совместимостью
Ubuntu 10.04.3 LTS Lucid Lynx (amd64)
AMD Phenome II x6; AMD 890GX; ATI Radeon HD4290; GDDR3 1600

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #4 : 29 Апрель 2010, 13:30:51 »
По ссылке в начале моего ответа есть пример внизу страницы.

Оффлайн xbox800

  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #5 : 29 Апрель 2010, 13:42:51 »
С++ только начинаю учить, просто книга по которой учусь с виндовскими листингами вот и пытаюсь решить проблемы с совместимостью
а там он часом не для понту , как например в этом примере
#include<stdio.h>
//#include<conio.h>
float km=10;
int d;
main()
{
//clrscr(); /* чистка экрана, функция берется
// из головного файла conio.h*/
d=1;    /* первый день, за который велосипедист
проехал 10 км.*/
while(km<20) /* пока выполнено условие цикла,
    подсчитываются километры и дни*/
{
km+=(km*0.5);
d++;
}
printf("велосипедист был в пути %d дней\n",d);
//getch();
}

Оффлайн s_lim

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #6 : 29 Апрель 2010, 14:08:05 »
xbox800
там эта функция считывает нажатые клавиши и является основой программы
Ubuntu 10.04.3 LTS Lucid Lynx (amd64)
AMD Phenome II x6; AMD 890GX; ATI Radeon HD4290; GDDR3 1600

Оффлайн DnSL48

  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #7 : 29 Апрель 2010, 14:15:53 »
#include <iostream>
int main(){
    char ch;
    std::cout << "Введите, пожалуйста, символ" << std::endl;
    std::cin >> ch;
    std::cout << "Поздравляем! Вы указали символ " << ch << std::endl;
}
« Последнее редактирование: 29 Апрель 2010, 14:19:27 от DnSL48 »
ArchLinux x86_64

Оффлайн xbox800

  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #8 : 29 Апрель 2010, 14:41:04 »
#include<stdio.h>

main(){
    char ch;
    printf("Введите, пожалуйста, символ\n");
    ch = getchar();
    printf("Поздравляем! Вы указали символ %c c кодом %d\n",ch,ch);
    return 0;
    }
   

Оффлайн s_lim

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #9 : 29 Апрель 2010, 14:45:53 »
DnSL48
не совсем то... в винде функция getche() считывает символ сразу после нажатия клавиши и не требует нажатия клавиши ввода
Ubuntu 10.04.3 LTS Lucid Lynx (amd64)
AMD Phenome II x6; AMD 890GX; ATI Radeon HD4290; GDDR3 1600

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #10 : 29 Апрель 2010, 15:06:20 »
Тогда похоже тебе сюда:
http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.17

Там есть ссылка на пример, но я бы не назвал этот пример простым для понимания.

Оффлайн sciko

  • Активист
  • *
  • Сообщений: 854
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #11 : 29 Апрель 2010, 15:15:09 »

Оффлайн xbox800

  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #12 : 29 Апрель 2010, 15:15:19 »
считывает символ сразу после нажатия клавиши и не требует нажатия клавиши ввода
тогда так  :)
Цитировать
#include<stdio.h>
#include <termios.h>
#include <unistd.h>
using namespace std;

int getch()
{
  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;
}
main(){
    char ch;
    printf("Введите, пожалуйста, символ\n");
    ch = getch();
    printf("Поздравляем! Вы указали символ %c c кодом %d\n",ch,ch);
    return 0;
    }

Оффлайн s_lim

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #13 : 29 Апрель 2010, 15:37:51 »
xbox800
че то не компилится

/home/sulimov/data/getche/main.cpp:16: error: ‘getchar’ was not declared in this scope
16:   ch = getchar();
Ubuntu 10.04.3 LTS Lucid Lynx (amd64)
AMD Phenome II x6; AMD 890GX; ATI Radeon HD4290; GDDR3 1600

Оффлайн xbox800

  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: аналог функции getche() в gcc
« Ответ #14 : 29 Апрель 2010, 15:40:58 »
xbox800
че то не компилится

/home/sulimov/data/getche/main.cpp:16: error: ‘getchar’ was not declared in this scope
16:   ch = getchar();

#include<stdio.h> не забыл?

 

Страница сгенерирована за 0.056 секунд. Запросов: 24.