在std::iostream
的{{1}},gcount
和tellg
成员中 g 代表什么?还有seekg
,pcount
和tellp
中的 p ?
为什么他们不叫seekp
,count
和tell
?
答案 0 :(得分:76)
在同时支持读取和写入的流中,您实际上有两个位置,一个位置用于读取(即,用“ g”表示的“ get”),另一个位置用于写入(即用“ p”表示的“ put”)。 >
这就是为什么您拥有seekp
(继承自basic_ostream
)和seekg
(继承自basic_istream
)的原因。
侧面说明:与C ++相比,语言C仅对两个指针具有一个这样的函数fseek
;从读取切换为写入时,指针必须重新放置,反之亦然(例如,this答案)。为了避免这种情况,C ++为读取和写入分别提供了单独的功能。
答案 1 :(得分:47)
C ++在导航文件时提供了两个指针: get 指针和 put 指针。第一个用于读取操作,第二个用于写入操作。
seekg()
用于将 g et指针移动到相对于参考点的所需位置。
tellg()
用于了解 g et指针在文件中的位置。
seekp()
用于将 p ut指针相对于参考点移动到所需位置。
tellp()
用于了解 p ut指针在文件中的位置。
主要来源:Quora,由 Gunjan B. Yadav 于2017年12月1日回答。