【C++】 文件指针回到开头

请问C++中当文件指针到达末尾时如何重新回到开头?seekg(0),seekg(ios::beg)等都没效果,代码如下:
template<typename T>
void input(const char* fname, vector<T> &a)
{
ifstream ifile(fname);
int count(0), i(0);
T tmp;

while (!ifile.eof())
{
ifile >> tmp;
count ++;
}

a.resize(count);
ifile.seekg(ios::beg);//写了这个也还是回不去

while (!ifile.eof())
ifile >> a[i++];

ifile.close();
}
请各位高手指教!

在定位前对流状态标志进行清除就可以了:
inf.clear();
inf.seekg(0,ios::beg);
还有一种解决办法是
inf.close();
inf.open(file1,ios::in|ios::binary); 关闭文件,然后再打开该文件
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-03
用rewind函数
函数名: rewind
功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头
注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。
用 法: void rewind(FILE *stream);
头文件: stdio.h
返回值:无本回答被提问者采纳
第2个回答  2012-10-19
后来你发现你的程序错在哪里了??我也出现相同的问题是用seekg根本就回不到文件的开头
第3个回答  2019-08-29
移动文件指针,
在c语言里使用fseek(流,偏移量,偏移类型);
c++里输入输出seekp(偏移量,便宜方式)seekg(偏移量,偏移方式)。
第4个回答  2012-06-01
在什么地方?我也遇到这个问题
相似回答