如果这些中的哪一个是正确的使用寻求方法

Which of these if the correct way to use seekg?

本文关键字:方法 哪一个 如果      更新时间:2023-10-16

对于 ifstream 对象 A,哪个语句会将文件位置指针定位到与对象 A 关联的 10 字节文件的末尾?

A. A.seekg(0);  
B. A.seekg(0, ios::end);    
C. A.seekg(10, ios::end);   
D. A.seekg(0, ios::beg);

不确定是B还是C...

seekg(a, b)会将读取位置设置为偏移b a字节。

因此:

  • A.seekg(0, ios::beg)相当于A.seekg(0)
  • 如果文件为 10 个字节,则A.seekg(0, ios::end)等效于 A.seekg(10)
  • A.seekg(10, ios::end)相当于A.seekg(20)。这不适用于 10 字节文件。

关于seekg的文档会回答您的问题。

谷歌

搜索"c ++ seekg"(顺便说一下,比在SO上输入问题更快(会产生 http://www.cplusplus.com/reference/istream/istream/seekg/。

从那里我们看到(大量删节(:

istream& seekg (streamoff off, ios_base::seekdir way);
...
off: Offset value, relative to the way parameter.
way: ... any of the following constant values: 
  ios_base::beg   beginning of the stream
  ios_base::cur   current position in the stream
  ios_base::end   end of the stream

由此,使用我们的演绎和批判性思维技能(在编程中具有重要的一般技能,通常在编程之外很有用(,我们可以看到,从流的末尾寻求 0 字节会导致<对读者>锻炼>。

提示:从末尾开始的 10 个字节不是结束。