2016-04-09 3 views
-4

Предположим, что у меня есть файл, открытый на C++, и я уже прочитал некоторые символы. Есть ли способ, чтобы я мог видеть, что представляет собой предыдущий символ, откуда я в данный момент находится в файле?Как вы читаете предыдущий символ в текстовом файле в C++

+1

Сохранение предыдущего чтения в переменной? * «Я уже читал в некоторых персонажах» * –

+0

У вас есть доступ к тем символам, которые вы прочитали? – Default

+0

@WeatherVane, что слишком легко. Эта задача, очевидно, требует много вызовов библиотеки. –

ответ

-1

Вы можете сохранить последнюю строку, что вы читаете, и получить длину, а затем получить, что последний символ путем обрезки строки длины ...

-1

Если вы знаете, что в строке персонаж (возможно, длина файла и подсчет уже прочитанных символов), вы можете использовать seekg. Например:

ifstream myFile; 
myFile.open(file); 
myFile.seekg(5); //fifth character from start 
0

Существует функция в классе iostream, называемая seekg (и seekp). Это похоже на указатель файла. Если вы хотите прочитать символ перед текущим, просто переместите указатель на байты вперед (так как char использует только байт). Формат будет: IOobjectName.seekg (-1, ios :: cur); Если вам нужна дополнительная информация, ознакомьтесь с этим сайтом! http://www.cplusplus.com/reference/istream/istream/seekg/ Надеюсь, это поможет.

0

Вы можете использовать IStream :: seekg(), как:

int prevChar = 0; 
is.seekg(-2, is.cur); // -2 because we want to read the previous char, -1 will move the position to the current char again 
if (is.good()) { 
    prevChar = is.get(); 
} 

это будет переместить текущую позицию чтения к предыдущему символу.

Смежные вопросы