В чем разница между входной и выходной позициями в потоках? - PullRequest
0 голосов
/ 19 сентября 2018

Есть ли разница между входной и выходной позициями в basic_iostream?

Если я помещаю байты в поток и хочу их прочитать, что мне следует использовать для чтения с начала, seekg() или seekp()?

1 Ответ

0 голосов
/ 19 сентября 2018

seekg устанавливает индикатор входной позиции текущего связанного объекта streambuf. * ​​1002 *

seekp устанавливает индикатор выходной позиции текущего связанного объекта streambuf. * ​​1005 *

Используя seekg,Вы можете установить индикатор в нужной позиции и читать оттуда.

Например, seekg(0) перемотает назад к началу объекта streambuf, и вы можете читать с начала.

Вот простой пример:

#include <iostream>
#include <string>
#include <sstream>
 
int main()
{
    std::string str = "Read from Beginning";
    std::istringstream in(str);
    std::string word1, word2, word3;
 
    in >> word1;
    in.seekg(0); // rewind
    in >> word2;
    in.seekg(10); // forward
    in >> word3;
 
    std::cout << "word1 = " << word1 << '\n'
              << "word2 = " << word2 << '\n'
              << "word3 = " << word3 << '\n';
}

Вывод:

word1 = Read
word2 = Read
word3 = Beginning

Для получения дополнительной информации см. Документацию seekg и seekp .

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