Как мне перейти с while (getline (cin, tmp))? - PullRequest
3 голосов
/ 28 сентября 2011

Я читаю 'универсальное программирование и stl'

в главе 1, это пример, подобный этому,

int main()
{
    vector<string> v;
    string tmp;

    while(getline(cin,tmp))  //problem is here, it keep asking me to input value
        v.push_back(tmp);

    sort(v.begin(), v.end());
    copy(v.begin(), v.end(), ostream_iterator<string>(cout,"\n"));

    return 0;
 }

как мне выйти из этого, он продолжает спрашиватьмне, чтобы ввести значение, без окончания ....

Ответы [ 3 ]

7 голосов
/ 28 сентября 2011

Отправка символа конца файла: вы можете использовать CTRL-Z Return (Windows) или CTRL-D (терминалы Unix). Тогда getline вернет false, так как нечего читать из stdin.

Альтернатива: перенаправить вывод другой программы в эту.

5 голосов
/ 28 сентября 2011

Ваша программа запрашивает ввод, пока он не достигнет EOF .Используйте Ctrl D в UNIX-подобных системах или Ctrl Z в Windows, чтобы отправить EOF для указания конца ввода.

0 голосов
/ 28 сентября 2011

Поскольку вы ничего не сравниваете в основном в цикле while, вы дали итератору не условие для выхода.

Так что добавьте переменную var и увеличьте значение цикла до 5 после пяти итераций, после чего он должен выйти

int x=0;
While(getline(cin,tmp),x!=5){
     //other code

 x++;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...