下面的代碼只打印文件一次:使用難度file.seekg()(C++)
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, const char *argv[])
{
ifstream infile;
infile.open("in", ios::binary);
char c;
while (infile.get(c))
{
cout << c;
}
infile.seekg(0, ios::beg);
infile.clear();
while (infile.get(c))
{
cout << c;
}
infile.close();
return 0;
}
我認爲它有一些通過文件運行後做的EOF標誌,但我不」不知道如何解決這個問題。
乾杯。
NO NO NO'while(!infile.eof())'不要這樣!改用'while(infile >> c){//用c}來代替。 – 2013-02-14 18:49:35
@TonyTheLion我不確定你可以在二進制文件中使用'operator >>',但你的評論仍然是朝着正確方向邁出的一步。我用來讀取二進制文件的是'while(infile.read(&c,1){...}'另外,如果你使用'infile.good()',因爲一些標誌正在被第一個循環設置,請在開始第二個循環之前調用'infile.clear()'。 – Praetorian 2013-02-14 18:52:36
http://stackoverflow.com/questions/1039667/why-does-stdfstream-set可能的間接副本(c!= EOF){if-if-it-way-it- – 2013-02-14 18:53:43