Каков наилучший способ разобрать или перебрать istream
? Мне нужно создать функцию, которая принимает istream
, анализирует ее и создает объект, поэтому задавался вопросом самый простой способ сделать это. Даже то, что могло бы превратить его в string
, было бы денди.C++ Iterate istream
ответ
Вы можете использовать istream_iterator
.
typedef std::istream_iterator<std::string> streamiter;
for (streamiter it = streamiter(some_istream); it != streamiter(); it++) {
// process words
}
Это разделит входной поток на все пробелы.
Поскольку C++ не имеет встроенного отражения и настойчивости, вы не можете написать функцию, которая читает любой объект, а затем посмотреть, с чем он столкнулся. You необходимо знать, что вы ищете, прежде чем и прочитайте, что конкретно. (Конечно, вы всегда можете просто читать токены и подавать их в парсер.)
Если вы точно знаете, какой тип объекта читать из потока, часто бывает полезно дать этому классу конструктор, принимающий std::istream&
. Поскольку обычно класс также содержит код для записи в поток, это ставит их обоих вместе, что лучше всего подходит для обслуживания. Затем код синтаксического анализа создает объект, передающий поток конструктору.
Если вы не знаете, с каким типом вы столкнетесь, вам придется написать (возможно, простую) функцию синтаксического анализа. Такие форматы должны начинаться с идентификатора, который сообщает, какой тип объектов следует. Ваша функция синтаксического анализа сначала должна будет прочитать этот идентификатор, а затем перейти в код, который считывает соответствующий тип из потока. Поскольку на данный момент он знает, какой тип объекта следует читать из потока, чтение реальных объектов может быть реализовано в конструкторах, как описано выше.
- 1. C# IStream реализация IStream
- 2. "carbon-copy" C++ istream?
- 3. C++ istream with lex
- 4. Перегрузка оператора istream C++
- 5. Iterate datarow in C#
- 6. C++: Iterate Through Map
- 7. C++ IStream оператор >>
- 8. ВФ из IStream в C++
- 9. Как получить длину IStream? C++
- 10. C++ предупреждение решения IStream :: tellg
- 11. C ФАЙЛ * to ostream/istream
- 12. C++/CLI-оболочка для istream
- 13. Ruby эквивалент оператора C++ istream?
- 14. Объявление generic istream в C++
- 15. function with istream & parameter C++
- 16. Функция C++ с istream & parameter
- 17. Использование станд :: IStream :: часовому с станд :: IStream
- 18. C#/ASP.NET Iterate Through Table
- 19. Iterate over Dictionary in C#
- 20. Iterate through Contours - OpenCV (C#)
- 21. Iterate trought struct in C
- 22. перегрузка istream
- 23. istream :: operator >> or istream :: get
- 24. istream operator
- 25. istream не работает в DEV C++
- 26. Перегрузка оператора C++ >> istream
- 27. Фильтрация недопустимых входов из istream в C++
- 28. C++, конструктор с istream в классе деривации
- 29. Как читать стандартный буфер istream в C++?
- 30. C++ Win32 IStream для проблем с строкой
Вы джентльмен и ученый. – Louis