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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Использование getline в C++  (Прочитано 15675 раз)

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

Оффлайн Александр_Тверь

  • Автор темы
  • Участник
  • *
  • Сообщений: 130
    • Просмотр профиля
Использование getline в C++
« : 01 Октября 2009, 16:23:21 »
Изучаю C++.
Возникла необходимость реализовать алгоритм согласно которому в командной строке происходит следующее:
либо пользователь вводит что-то либо происходит внешнее событие.
Вопрос в том, что при использовании getline или просто cin пока пользователь чего-нибудь не введет, дальше выполнение программы не идет.

условный код

while (1) {
   string str;
   getline(cin,str); // тут ждет пока пользователь что-нибудь введет, а хотелось бы, чтобы он периодически проверял чтоль...
  if (Exit) break;

}
Подскажите, пожалуйста, как можно решить такую задачу?

P.S. пока писал, подумал, что вопрос можно сформулировать - Как периодически проверять, а не ввел ли что-нибудь пользователь?




Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Использование getline в C++
« Ответ #1 : 01 Октября 2009, 16:33:27 »
Это не С++, это просто C.
Функция называется select, дальше чтение с помощью read, write, анализ и сборка байтов в string.


« Последнее редактирование: 01 Октября 2009, 16:35:06 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Александр_Тверь

  • Автор темы
  • Участник
  • *
  • Сообщений: 130
    • Просмотр профиля
Re: Использование getline в C++
« Ответ #2 : 01 Октября 2009, 16:36:08 »
Спасибо, буду пробовать!

Пользователь решил продолжить мысль 01 Октября 2009, 14:41:18:
Это не С++, это просто C.
Функция называется select, дальше чтение с помощью read, write, анализ и сборка байтов в string.




Может, на вскидку, помните в какой библиотеке находится фнкция select?
или где можно по ней посмотреть информацию.

Пользователь решил продолжить мысль 01 Октября 2009, 16:53:13:
вопрос снят, нашел и понял все :) еще раз спасибо!
http://freesource.info/wiki/Stat%27i/KratkoOboVsjom/Clang
« Последнее редактирование: 01 Октября 2009, 16:53:13 от Александр_Тверь »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Использование getline в C++
« Ответ #3 : 02 Октября 2009, 16:02:33 »
Может, на вскидку, помните в какой библиотеке находится фнкция select?

libc, насколько я понимаю.

или где можно по ней посмотреть информацию.

man select
с командной строки.

Также man 3 read, man 3 write, да и вообще man man.

КДЕшный konqueror поддерживает протокол man://
Можно в адресной строке ему ввести man://select - и он выведет справку.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн yaromir

  • Активист
  • *
  • Сообщений: 670
    • Просмотр профиля
Re: Использование getline в C++
« Ответ #4 : 04 Октября 2009, 20:33:05 »
wl,
Цитировать
Это не С++, это просто C.
getline() - это чистый C++. Первый аргумент: объект класса istream. Можете убедиться
http://www.cplusplus.com/reference/string/getline/
Да и код, соответствующий C89 можно компилировать, как программу на C++. Ничего страшного в этом нет - в стандарте С++ C++98 стандарт языка C C89 определен, как подмножество C++.
У меня man select ничего не выводит. Подскажите пожалуйста, какой пакет нужно поставить.

Александр Тверь,
Цитировать
Может, на вскидку, помните в какой библиотеке находится фнкция select?
#include <sys/select.h>
Функция select() - часть POSIX.
« Последнее редактирование: 04 Октября 2009, 20:42:21 от Oldwise (aka yaromir) »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Использование getline в C++
« Ответ #5 : 05 Октября 2009, 10:40:55 »
wl,
Цитировать
Это не С++, это просто C.
getline() - это чистый C++. Первый аргумент: объект класса istream. Можете убедиться
Я имел в виду, что для реализации задачи С++ не надо, надо С.

У меня man select ничего не выводит. Подскажите пожалуйста, какой пакет нужно поставить.
Кажется, manpages-dev
« Последнее редактирование: 05 Октября 2009, 10:43:19 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

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