Как переместить указатель файла на следующий символ через «ifstream» без «получения» какого-либо символа, как это делает «fseek»? - PullRequest
3 голосов
/ 02 июня 2011

seekg использует ios в качестве второго аргумента, а ios может быть установлено на end или beg или некоторые другие значения, как показано здесь: http://www.cplusplus.com/reference/iostream/ios/

Я просто хочу, чтобы указатель переместился на следующий символ, как это сделать с помощью ifstream ?

EDIT Проблема в том, что мне нужна функция в ifstream , похожая на fseek , которая перемещает указатель, ничего не читая.

Ответы [ 4 ]

6 голосов
/ 02 июня 2011
ifstream fin(...);
// ...

fin.get(); // <--- move one character
// or
fin.ignore(); // <--- move one character
5 голосов
/ 02 июня 2011

Да.Она называется seekg () , как вы, кажется, уже знаете?

std::ifstream is("plop.txt" );

// Do Stuff

is.seekg (1, std::ios::cur);  // Move 1 character forward from the current position.

Обратите внимание, это то же самое, что и:

is.get();

// or 

is.ignore();
4 голосов
/ 02 июня 2011

Прочитайте документы для seekg и используйте ios_base::cur, как указано там.

0 голосов
/ 02 июня 2011

Я думаю, peek () и unget () также могут быть полезны.

Используйте peek () для просмотра следующего символа, чтобы getline работал так, как вы хотели.

Используйте unget для возврата символа в буфер, если вы использовали метод get ().

...