Когда вы используете ignore() в C++, есть ли способ проверить те значения, которые были проигнорированы? Я в основном читаю несколько символов и хочу знать, не игнорировал ли я обычных символов в тексте, или если я сначала получил символ новой строки. Благодарю.Проверка игнорирования() для значений
ответ
Я так не верю - вам придется «сворачивать свои собственные».
Другими словами, я думаю, вам нужно будет написать код, который читается из потока, используя get()
, а затем добавить некоторую логику для сохранения того, что вам нужно, и игнорирования остальных (пока вы проверяете, что вы игнорируете).
Если вы предоставляете дополнительный delim
параметр ignore()
, то он может остановиться на новой строки:
streampos old = is.tellg();
is.ignore(num, '\n');
if (is.tellg() != old + num) {
// didn't ignore "num" characters, if not eof or error then we
// must have reached a newline character.
}
Там есть загвоздка, хотя - когда ignore()
попадает в ограничитель, он игнорирует это. Поэтому, если вы нажмете разделитель точно в конце вашего набора игнорируемых символов, то tellg()
вернет old + num
. AFAIK нет никакого способа сказать, был ли последний игнорируемый символ разделителем. Также нет способа указать разделитель, который не является одним символом.
Я также не знаю, будет ли и когда это, вероятно, будет быстрее, чем просто чтение num
байт и поиск его для строк новой строки. Моя первоначальная мысль заключалась в том, «какая часть разницы между ignore()
и read()
неочевидна?» ;-)
Если вы действительно не хотите игнорировать символы, не используйте ignore()
, чтобы извлечь их. get()
может выполнять одно и то же задание, но также сохраняет извлеченные символы, чтобы вы могли их проверить позже.
- 1. Проверка значений пустых столбцов в случае их игнорирования
- 2. Принуждение SUMPRODUCT для игнорирования текстовых значений
- 3. Переопределение поведения словарей в Swift для игнорирования нулевых значений?
- 4. Hive SQL - уточнение запроса JOIN для игнорирования значений Null
- 5. Лучшая практика для игнорирования пустых значений в цикле .each()?
- 6. Как получить HttpClient Json serializer для игнорирования нулевых значений
- 7. Проверка Javascript для десятичных значений
- 8. Проверка хеша для значений nil
- 9. Проверка нескольких значений для переменной
- 10. Проверка db для нулевых значений
- 11. Проверка массива для равных значений
- 12. HTML5 Проверка для числовых значений
- 13. Проверка ввода: проверка нескольких значений
- 14. Получение InterruptedException для игнорирования прерывания
- 15. Настройка IntelliTrace для игнорирования функции
- 16. Получение Subclipse для игнорирования изменений
- 17. Git. Net файлы для игнорирования
- 18. regex для игнорирования имени хоста
- 19. Использовать onTouch для игнорирования onClick
- 20. Задание printf для игнорирования форматирования
- 21. миграции для игнорирования конкретных таблиц
- 22. Doxygen Alias для игнорирования строки
- 23. Lucene Индексирование для игнорирования апострофов
- 24. Использование knexjs для игнорирования вставки
- 25. Поиск MySQL для игнорирования дефис
- 26. Код для игнорирования примера алфавитов
- 27. Установка тестового набора для игнорирования
- 28. Сценарий Photoshop для игнорирования .ds_store
- 29. Директива для игнорирования компиляции элемента
- 30. Оператор репликации для игнорирования бита