【发布时间】:2012-09-05 07:49:45
【问题描述】:
void maintainFileName ()
{
std :: ifstream myfile;
myfile.open ("zoomLevels.txt");
if (myfile.is_open ())
{
// Move to end of the file,
myfile.seekg (0, std::ios::end);
// and then six characters back to pick up the last file number.
myfile.seekg (6, std::ios::beg);
int len = 1;
char *t = new char[len];
myfile.read(t, len);
qDebug () << "\nt: " << *t << "\n";
}
else
{
qDebug () << "\nsorry";
}
}
该文件包含以下内容:
78.8115,29.582,1,01.rda
78.8115,29.582,2,02.rda
76.3671,30.2201,1,11.rda
76.3671,30.2201,2,12.rda
78.1908,30.3007,1,01.rda
78.1908,30.3007,2,02.rda
77.3284,29.1415,1,01.rda
77.3284,29.1415,2,02.rda
77.3064,29.1655,1,01.rda
77.3064,29.1655,2,02.rda
该函数返回的值是5,而倒数第六个字符是0!
我哪里错了?
【问题讨论】:
-
您理解了
dir参数的含义错误。这不是一个方向!不过,您可能不是第一个被抓住的人:这完全是误导:它实际上是一个职位! -
@J.N.看到这个:cplusplus.com/reference/iostream/istream/seekg 是否写在那里:
Seeking direction。 :) -
非常来自链接:“寻找方向。它是一个 ios_base::seekdir 类型的对象,它指定了偏移量的绝对位置参数 off 被应用。”方向/绝对位置。难怪人们会感到困惑。
-
以下链接更清晰:en.cppreference.com/w/cpp/io/basic_istream/seekg。仍然有
dir名称,可能来自标准。