Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Переход на "новую строку" во входном потоке

Автор: sheka 14.09.2011 1:30

Как организовать переход на "новую строку" в файле (во входном потоке) при считывании.
Если использовать istream& ignore ( streamsize n = 1, int delim = EOF ), то первой переменной автоматически обрезается(не важно на сколько, сам факт) размер входной строки.

Автор: IUnknown 14.09.2011 1:51

Другого способа просто нет. Nicolai M. Josuttis (автор "The C++ Standard Library: A Tutorial and Reference") предлагает определить вот такой манипулятор ignoreLine, который будет пропускать символы до конца строки:

#include <iostream>
#include <fstream>
#include <limits>

using namespace std;

template <class charT, class traits>
inline std::basic_istream<charT,traits>&
ignoreLine (std::basic_istream<charT,traits>& strm)
{
strm.ignore(std::numeric_limits<int>::max(),strm.widen('\n'));
return strm;
}

// использовать - так:
int main()
{
ifstream ifs ("/home/volvo/test.txt" , ifstream::in);
int n;

ifs >> n;
cout << n << endl;
ifs >> ignoreLine;
ifs >> n;
cout << n << endl;
ifs.close();

return 0;
}


Как видишь, в итоге все сводится к тому же ignore...