Streambuf получить стримпос

Я использую C ++ streambuf класс для проекта компилятора и нужен удобный способ получить текущую позицию в потоке.

Есть две функции-члена, streambuf::pubseekpos и streambuf::pubseekoff, чтобы изменить позицию, и я довольно смущен отсутствием streambuf::pubgetpos функция-член (или что-то подобное), чтобы прочитать его.

Кажется, есть два возможных обходных пути:

  1. Я мог бы сохранить текущую позицию в отдельной переменной и изменить
    это вручную всякий раз, когда я читаю символы из потока.

  2. Я мог позвонить streambuf::pubseekoff(0, ios_base::cur), который возвращает
    новая позиция потока.

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

4

Решение

streambuf не имеет отдельного интерфейса для чтения позиции. Тем не мение, istream а также ostream делать (tellg а также tellp соответственно).

Интересно, что потоки используйте ваш вариант 2 чтобы получить свои позиции, так что это просто нормально.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]