web-dev-qa-db-ja.com

Gはgcount、tellg、seekgで何を表していますか?

g は、std::iostreamgcounttellg、およびseekgメンバーで何を表していますか?そしてpcounttellpそしてseekp p は?

なぜ彼らは単にcounttellseekと呼ばれないのですか?

69
Andrew Tomazos

読み取りと書き込みの両方をサポートするストリームでは、実際には読み取り用(つまり "get")と書き込み用(つまり "put")の2つの位置があります。

seekpbasic_ostreamから継承)とseekgbasic_istreamから継承)があるのはそのためです。

サイドノート:言語Cは、C++とは対照的に、両方のポインタに対してそのような関数fseekを1つだけ持っています。読み取りから書き込み、またはその逆に切り替えるときには、ポインタの位置を変更する必要があります(たとえば、 this answerを参照)。これを回避するために、C++はそれぞれ読み取りと書き込みに別々の関数を提供しています。

76
Stephan Lechner

C++では、ファイルをナビゲートするときに、getポインタとputポインタの2つのポインタを使用できます。最初のものは読み取り操作に使用され、2番目のものは書き込み操作に使用されます。

  • seekg()は、 g etポインタを参照点を基準にして目的の位置に移動するために使用されます。

  • tellg()は、 g etポインタがファイル内のどこにあるかを知るために使用されます。

  • seekp()は、 p utポインタを参照点に対して望ましい位置に移動するために使用されます。

  • tellp()は、 p utポインタがファイル内のどこにあるかを知るために使用されます。

主な情報源: Quora 、2017年12月1日のGunjan B. Yadavによる回答。

47
Tu.ma