int main(int argc, char *argv[])
{
if(argc!=3) {
cout << "Применение: имя_программы " << "<имя_файла> <байт>\n";
return 1;
}
fstream out(argv[1], ios::in | ios::out | ios::binary);
if(!out) {
cout << "He удается открыть файл.\n";
return 1;
}
out.seekp(atoi(argv[2]), ios::beg);
out.put('X');
out.close();
return 0;
}
В следующей программе показано использование функции
/* Отображение содержимого файла с заданной стартовой позиции.
*/
#include
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
char ch;
if(argc!=3) {
cout << "Применение: имя_программы "<< "<имя_файла> <стартовая_позиция>\n";
return 1;
}
ifstream in(argv[1], ios::in | ios::binary);
if(!in) {
cout << "He удается открыть файл.\n";
return 1;
}
in.seekg(atoi(argv[2]), ios::beg);
while(in.get (ch)) cout << ch;
return 0;
}
Текущую позицию каждого файлового указателя можно определить с помощью этих двух функций.
pos_type tellg();
pos_type tellp();
Здесь используется тип
Существуют перегруженные версии функций
istream &seekg(pos_type position);
ostream &seekp(pos_type position);
С++-система ввода-вывода поддерживает статусную информацию о результатах выполнения каждой операции ввода-вывода. Текущий статус потока ввода-вывода описывается в объекте типа
Статусную информацию о результате выполнения операций ввода-вывода можно получать двумя способами. Во-первых, можно вызвать функцию
iostate rdstate();
Функция
Во-вторых, о наличии ошибки можно узнать с помощью одной или нескольких следующих функций-членов класса
bool bad();
bool eof();
bool fail();
bool good();
Функция
Если при выполнении операции ввода-вывода произошла ошибка, то, возможно, прежде чем продолжать выполнение программы, имеет смысл сбросить флаги ошибок. Для этого используйте функцию
void clear (iostate flags = ios::goodbit);
Если параметр
Прежде чем переходить к следующему разделу, стоит опробовать функции, которые сообщают данные о состоянии флагов ошибок, внеся в предыдущие примеры программ код проверки ошибок.