Обсуждение Программирование на C/C++

Russel

Ословед
Подскажите, как в линуксе прочитать строку с клавиатуры, то есть считать с начала и до перевода строки (до ENTER'а тобишь)
 
Подскажите, как в линуксе прочитать строку с клавиатуры, то есть считать с начала и до перевода строки (до ENTER'а тобишь)

Ээ... какой то не полный вопрос!
Если из консоли видимой строко, то банальный:
char buf[1024];
scanf ("%1000s", buf);

А вот если например для текстовой игры, то
нужно юзать ncurses или getch()
 

    Russel

    очки: 6
    Спасибо
Подскажите какая функция или набор опеаторов возвращает ASCII-коды нажатых клавиш, в том числе и дополнтельных.
 
Для ascii можно getch(), например.
А вот дополнительные не подаются стандартизации, мало ли какие клавы бывают и потому и нет стандартной функции в Си/Си++.

Если пишешь под винду смотри про меседж
WM_KEYDOWN.
 
подскажите по такому вопросу:как перевести double в строку(по стандарту С++,без использования Сишных функций и библиотек сторонних производителей)?
мне нужно примерно в таком контексте
double t;
string s;
...// вычисляется t
s = "результат "+перевод_в_строку(t);

Если BCB то FloatToStr
 
Для ascii можно getch(), например.
А вот дополнительные не подаются стандартизации, мало ли какие клавы бывают и потому и нет стандартной функции в Си/Си++.

Если пишешь под винду смотри про меседж
WM_KEYDOWN.
Под винду не надо. Ну а всё таки, есть ли какой-то выход из этой ситуации? Дополнительные клавиши имеется ввиду F1-F12, стрелочки, и т. д. функция gech(), вместо их кода возвращает 0.
 
Bioskey и справка к нему тебе в помосч.
Там чёто типа bioskey(1) - ждать нажатия (или просто проверка на наличие в буфере кода, не помню, вроде второе), bioskey(0) - возвращение этого кода. Позабиваешь, посмотришь, на какие клавиши чё выводится. bioskey(2) - вроде удаление кода из буфера. В общем, смотри хэлп.
 
Bioskey и справка к нему тебе в помосч.
Там чёто типа bioskey(1) - ждать нажатия (или просто проверка на наличие в буфере кода, не помню, вроде второе), bioskey(0) - возвращение этого кода. Позабиваешь, посмотришь, на какие клавиши чё выводится. bioskey(2) - вроде удаление кода из буфера. В общем, смотри хэлп.
Это старая функция и в новых компиляторах библиотеки bios.h вообще нету.
 

elle

Ословед
такой глупый вопрос
Код:
class X
{
  private:
  static const a = 1;
};
int main(int argc, char* argv[])
{
   cout << X::a; // почему есть доступ к закрытому полю? или это особенность static?
   return 0;
}
 
новых компиляторах библиотеки bios.h вообще нету

Насколько я помню bios.h - это поделка Borland.
Можно попоробовать заюзать асм
Код:
#include <stdlib.h>

int main (void)
{
	char ascii, ext;

	while (1) {

		ascii = 0;
		ext = 0;

		_asm {
			mov ah, 10h
			int 16h
			mov ascii, al
			mov ext, ah
		}
		printf ("%d\t%d", ascii, ext);
	}
	return 0;
}
Правда проверить этот пример у меня не начем (подайте неимущему ссылку на BC) :(
Но вот XP код не понравился
 
такой глупый вопрос
class X
{
private:
static const a = 1;
};
int main(int argc, char* argv[])
{
cout << X::a; // почему есть доступ к закрытому полю? или это особенность static?
return 0;
}

А какой компилятор?
Мой DevC++(GCC) пишет:
1)static const a = 1; <= здесь нужен как миним-м int
2)a = 1 <= приватное, так что фиг тебе
Так что у меня доступ закрыт.
 

elle

Ословед
А какой компилятор?
Мой DevC++(GCC) пишет:
1)static const a = 1; <= здесь нужен как миним-м int
2)a = 1 <= приватное, так что фиг тебе
Так что у меня доступ закрыт.
C++ Builder 6
насколько я знаю, если тип опущен, то подразумевается инт:)
а у меня доступ свободный)) вот и интересно,почему
 
C++ Builder 6
насколько я знаю, если тип опущен, то подразумевается инт
а у меня доступ свободный)) вот и интересно,почему

Не хочу прослыть профаном, но где то читал, что Борланд изменил С++(как и Object Pascal), чтобы легче было делать GUI.

Возможно вру.
 
Уже разобрался, действительно нужно использовать функцию getch(), просто для дополнительных клавиш когда она возвращает 0, её нужно вызывать повторно.
 
Сверху