Курсоры чтения и записи в 'std::fstream' всегда имеют одинаковую позицию C++

Рейтинг: 3Ответов: 1Опубликовано: 31.07.2025

Вопрос такой: курсоры в std::fstream всегда имеют одинаковую позицию (как для чтения, так и для записи).

Например, в std::stringstream такого нет:

Курсор для чтения имеет свою позицию, как и курсор для записи.


  • Я пробовал почитать об этом, но так и не совсем понял из-за чего было принято такое решение. Нашел только информацию о том, что это связано с low-level I/O, ОС и тем, что нельзя писать и читать сразу в двух разных местах - но так и не понял почему конкретно.

  • Есть те, кто также задавался таким вопросом и/или знает ответ? Надеюсь, что здесь я его получу.

Хочу предупредить: std::stringstream я привел чисто в пример, как мое ожидание по работе с позициями курсоров в std::fstream - ничего большего!

Ответы

▲ 1Принят

В общем я нашел ответ - расскажу для тех, кому интересно: все дело в том, что на уровне ОС - может существовать лишь один курсор для чтения и записи. Поэтому курсоры в std::fstream связаны, и не могут иметь разные позиции.