stdin

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

koljakolja
Сообщения: 4

stdin

Сообщение koljakolja »

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

#include <iostream>
#include <vector>
using namespace std;

int main ( int argc, char** argv )
{
    string line;
    string word;
    vector<string> v;

    while ( getline ( cin, line ) ) v.push_back ( line );

    for ( int i = 0; i < v.size (); ++i )
        cout << i+1 << ')'<< v[i] << endl;

    cin >> word;
    cout << word;

    return 0;
}


Запускаю так:

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

printf "  wo rd1\n  word2\nasdf\n j45" | ./a.out


Выводит:

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

v1)  wo rd1
2)  word2
3)asdf
4) j45


Всё, а я хочу, чтобы после этого ещё можно было считать слово в переменную word..
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: stdin

Сообщение pcodr »

Вставьте cin.clear() после цикла. Это поможет при ручном вводе и ^D. А при конвеерном запуске думаю ничего не поможет.
remote system type is unix
Спасибо сказали:
koljakolja
Сообщения: 4

Re: stdin

Сообщение koljakolja »

вот, да, надо именно при конвеерном чтоб всё работало )
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: stdin

Сообщение pcodr »

Я погорячился, это явно можно сделать. После цикла нужно переоткрыть stdin на текущий терминал. Поищите информацию как узнать устройство текущего терминала в С++. Из консоли (командой w) например я вижу что мой текущий эмулятор терминала это /dev/pts/3, его в данном случаи и следовало бы открыть.
remote system type is unix
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: stdin

Сообщение pcodr »

Глянул исходники less. Оказывается всё просто, текущему терминалу соответствует /dev/tty . Соответственно переоткрываете после цикла cin на /dev/tty и будет всё нормально.
remote system type is unix
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: stdin

Сообщение drBatty »

koljakolja писал(а):
14.02.2010 16:15
вот, да, надо именно при конвеерном чтоб всё работало )

в /dev/fd/ есть нужные симлинки.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: