ungetc эквивалент c # - PullRequest
       13

ungetc эквивалент c #

3 голосов
/ 12 января 2009

Есть ли какая-либо функция в c #, эквивалентная функции stdio C ungetc ()?

1 Ответ

4 голосов
/ 12 января 2009

Не то, что я знаю; для некоторых сценариев вы можете использовать что-то вроде StreamReader и использовать Peek?

        using(StreamReader reader = new StreamReader(stream))
        {
            /// ... lots of reading
            int i = reader.Peek();
            /// ... lots of reading
        }

Однако я не думаю, что вы можете отправить произвольные данные обратно в поток, если вы не используете что-то вроде MemoryStream и, таким образом, можете обезьяны с данными.

Даже если у вас есть Stream, который доступен как для чтения, так и для записи (редко), тогда остается только один курсор, поэтому вам нужно быть осторожным, чтобы сбросить позицию после записи (так, чтобы ее можно было искать тоже, опять же, не часто); однако это не является надежным - некоторые потоки (например, сетевые потоки в TCP) будут обрабатывать запись как «отправить это на другой компьютер», и она никогда не будет возвращена чтением. И это не для поиска; -p

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