What does the g stand for in gcount, tellg and seekg?

What does the g stand for in std::iostream's gcount, tellg and seekg members? And the p in pcount, tellp and seekp?

Why aren't they called just count, tell and seek?


Solution 1:

In streams supporting both read and write, you actually have two positions, one for read (i.e. "get" denoted by "g") and one for write (i.e. "put" denoted by a "p").

And that's why you have a seekp (inherited from basic_ostream), and a seekg (inherited from basic_istream).

Side note: The language C has - in contrast to C++ - only one such function fseek for both pointers; There it is necessary to re-position the pointer when switching from read to write and vice versa (cf., for example, this answer). To avoid this, C++ offers separate functions for read and write, respectively.

Solution 2:

C++ offers two pointers while navigating the file: the get pointer and the put pointer. The first one is used for read operations, the second one for write operations.

  • seekg() is used to move the get pointer to a desired location with respect to a reference point.

  • tellg() is used to know where the get pointer is in a file.

  • seekp() is used to move the put pointer to a desired location with respect to a reference point.

  • tellp() is used to know where the put pointer is in a file.

Main source: Quora, answer by Gunjan B. Yadav on Dec 1, 2017.