Помогите начинающему Linux - кодеру (Несколько вопросов по C++)

Модератор: Модераторы разделов

Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Помогите начинающему Linux - кодеру

Сообщение georgy_sh »

Приветствую Всех!
Наконец-то взялся за серьезное изучение программирования на C++ под Linux. Под виндовоз вроде неплохо кодил, а при программировании под Linux возникло несколько вопросов:
1) Имеем объявление

Код: Выделить всё

string a;
Каким образом можно ввести строку целиком со всеми пробелами? Что-то типа или

Код: Выделить всё

getline();

2) Каким образом можно использовать функцию

Код: Выделить всё

getche();
Что-то у меня ничего не получается :(
3) Каким образом можно писать программки с простенькой графикой (как это было раньше под DOS)? Например, построить график функции

Код: Выделить всё

f(x) = 2*x

____________
ЗЫ Это еще не все! Ждите в ближайшее время ОЧЕНЬ много подобных вопросов :)
Извините за ламерство и элементарное незнание.
Заранее благодарю за ответ!
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: Помогите начинающему Linux - кодеру

Сообщение powerfox »

(He1mut @ Jun 12 2006, в 21:52) писал(а):Наконец-то взялся за серьезное изучение программирования на C++ под Linux. Под виндовоз вроде неплохо кодил, а при программировании под Linux возникло несколько вопросов:

Вопросы заданы не по Linux, а по C++. Использование стандартной библиотеки в Linux ничуть не отличается от её использования в Windows,

(He1mut @ Jun 12 2006, в 21:52) писал(а):3) Каким образом можно писать программки с простенькой графикой (как это было раньше под DOS)? Например, построить график функции

ncurses(консольная графика), SDL...

Ответы на остальные вопросы находятся в литературе по С++ и стандартной библиотеке(STL).
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: Помогите начинающему Linux - кодеру

Сообщение georgy_sh »

Так-с... Один вопрос решил (с вводом строки вместе с пробелами):

Код: Выделить всё

...
string str;
getline(std::cin, str, '\n');
cout << str << endl;
...

В данном случае первый аргумент функции - поток, откуда вводится строка (стандартный поток ввода, файл и т.д.), второй - собственно строка, третий - символ, являющийся признаком конца строки.
/*-----------------------------------*/
На консольную графику я подзабил - первой необходимости в это нет.
/*-----------------------------------*/
А вот относительно getche(); и getch(); я разочаровался! Оказывается, такой функции тут нет. А в DOS'е и виндовозе было проще:

Код: Выделить всё

#include <conio.h>
...
getch();
.....

Но, полазив по забугорным форумам нашел:

Код: Выделить всё

[he1mut@localhost ~]$ cat code.cpp
#include <iostream>
#include <curses.h>

using namespace std;

int main()
{
        initscr();
        getch();
        return 0;
}
[he1mut@localhost ~]$ g++ code.cpp -o run
/tmp/ccy8RUrw.o: In function `main':code.cpp:(.text+0x84): undefined reference to `initscr'
:code.cpp:(.text+0x89): undefined reference to `stdscr'
:code.cpp:(.text+0x91): undefined reference to `wgetch'
collect2: ld returned 1 exit status
[he1mut@localhost ~]$

Подскажите! Что делать?
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: Помогите начинающему Linux - кодеру

Сообщение powerfox »

g++ -lncurses code.cpp -o run

У тебя заголовочный файл curses.h, для использования функций оттуда нужно подключит библиотеку.
Спасибо сказали:
CompoVod
Сообщения: 27

Re: Помогите начинающему Linux - кодеру

Сообщение CompoVod »

He1mut писал(а):
12.06.2006 23:14
Подскажите! Что делать?

Заголовок подключил, а с библиотекой не слинковался.
g++ code.cpp -o run -lcurses
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: Помогите начинающему Linux - кодеру

Сообщение powerfox »

Чем тебе не нравится стандартная библиотека? Там нормальные ф-ии для работы со строками.

CompoVod, одновременно :)
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: Помогите начинающему Linux - кодеру

Сообщение georgy_sh »

Заголовок подключил, а с библиотекой не слинковался.
g++ code.cpp -o run -lcurses

УУУ........
Вот это глюки.

Код: Выделить всё

[he1mut@localhost ~]$ cat code.cpp
#include <iostream>
#include <curses.h>

using namespace std;

int main()
{
        initscr();
        getch();
        return 0;
}
[he1mut@localhost ~]$ g++ code.cpp -o run -lcurses

Экран очищается. Нажимаю клавишу - появляется приглашение:

Код: Выделить всё

[he1mut@localhost ~]$

Ввожу команду: она не отображается на экране. Ладно, вслепую ввожу "ls -l": а вывод команды просто ужасный! Как-будто все '\n' командный процессор заменил на пробелы!!!
На скрине: запустил прогу, нажал "q" - ввел команду "ls", понажимал Enter.
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: Помогите начинающему Linux - кодеру

Сообщение powerfox »

Почитай доки по ncurses.
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: Помогите начинающему Linux - кодеру

Сообщение georgy_sh »

powerfox писал(а):
13.06.2006 00:04
Почитай доки по ncurses.

Действительно, это было бы гораздо полезнее :) Спасибо за указание на верный путь! :)
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: Помогите начинающему Linux - кодеру

Сообщение powerfox »

Вообще, в зависимости от того что ты пишешь, можно было бы почитать о SDL(есть неплохой туториал на русском + можно писать прикольные игрушки, большинство игр под Linux написаны на SDL)
Спасибо сказали:
Аватара пользователя
helicopter
Сообщения: 324
Статус: Комсомолец
ОС: Gentoo Linux

Re: Помогите начинающему Linux - кодеру

Сообщение helicopter »

powerfox писал(а):
13.06.2006 00:20
Вообще, в зависимости от того что ты пишешь, можно было бы почитать о SDL(есть неплохой туториал на русском + можно писать прикольные игрушки, большинство игр под Linux написаны на SDL)


А ссылочку на туториал на Русском можно ?
Выбирая Linux, вы развиваете цивилизацию. Выбирая windows, вы набиваете кошелёк забугорному буржую...
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks

Re: Помогите начинающему Linux - кодеру

Сообщение Alxn1 »

helicopter писал(а):
13.06.2006 00:31
А ссылочку на туториал на Русском можно ?


Можно. http://www.libsdl.org/intro.ru/toc.html :)
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: Помогите начинающему Linux - кодеру

Сообщение powerfox »

(Alxn1 @ Jun 13 2006, в 00:38) писал(а):Можно.


Не та ссылка. Это просто русская документация,

Тема: http://linuxforum.ru/index.php?showtopic=11624&hl=SDL

Туториал можно найти здесь:plg.lrn.ru
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks

Re: Помогите начинающему Linux - кодеру

Сообщение Alxn1 »

powerfox писал(а):
13.06.2006 00:47
Туториал можно найти здесь:plg.lrn.ru


Про это не знал. :( Пойду курить на всякий случай :)
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: Помогите начинающему Linux - кодеру

Сообщение powerfox »

(Alxn1 @ Jun 13 2006, в 00:52) писал(а):Пойду курить на всякий случай

Минздрав предупреждает... :)
Спасибо сказали:
diafour
Сообщения: 14

Re: Помогите начинающему Linux - кодеру

Сообщение diafour »

(He1mut @ Jun 12 2006, в 23:53) писал(а):Ввожу команду: она не отображается на экране. Ладно, вслепую ввожу "ls -l": а вывод команды просто ужасный! Как-будто все '\n' командный процессор заменил на пробелы!!!
На скрине: запустил прогу, нажал "q" - ввел команду "ls", понажимал Enter.

Обычно помогает reset. Нет, не кнопка, а команда =)
Спасибо сказали: