下面的代碼:爲什麼seekg函數不起作用?
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
string infile(argv[1]);
ifstream fin(infile.data());
string var_name;
char ch = fin.get();
cout << ch << endl;
ch = fin.get();
cout << ch << endl;
ch = fin.get();
cout << ch << endl;
cout << "pos: " << fin.tellg() << endl;
fin.seekg(-sizeof(char),ios::cur);
cout << "pos: " << fin.tellg() << endl;
ch = fin.get();
cout << ch << endl;
return 0;
}
文件內容只是一個字符串:
<
?
x
m
,輸出是:
<\n
?\n
x\n
pos: 3\n
pos: 2
x
爲什麼打印的最後一個字符還是 'X' ??爲什麼不看seekg函數將文件指針移回一個字節?
'sizeof(char)'總是1.你可能會寫-2。 – Alex
這是爲了完整:-P @Alex。 OP會理解我是否以這種方式編寫它,因爲他已經嘗試將它寫爲'-sizeof(char)'。 –
然後它應該是'-sizeof(char)* 2' :) – Alex