Функции
istream &get(char &ch);
ostream &put(char ch);
Функция
При выполнении следующей программы на экран будет выведено содержимое любого заданного файла. Здесь используется функция
/* Отображение содержимого файла с помощью функции get().
*/
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
char ch;
if(argc!=2) {
cout << "Применение: имя_программы <имя_файла>\n";
return 1;
}
ifstream in(argv[1], ios::in | ios::binary);
if(!in) {
cout << "He удается открыть файл.\n";
return 1;
}
while(in) {
/* При достижении конца файла потоковый объект in примет значение false. */
in.get(ch);
if(in) cout << ch;
}
in.close();
return 0;
}
При достижении конца файла потоковый объект
Существует более короткий вариант цикла, предназначенного для считывания и отображения содержимого файла.
while(in.get(ch)) cout << ch;
Этот вариант также имеет право на существование, поскольку функция
В следующей программе для записи строки в файл используется функция
/* Использование функции put() для записи строки в файл.
*/
#include
#include
using namespace std;
int main()
{
char *p = "Всем привет!";
ofstream out("test", ios::out | ios::binary);
if(!out) {
cout << "He удается открыть файл.\n";
return 1;
}
while(*p) out.put(*p++);
out.close();
return 0;
}
Чтобы считывать и записывать в файл блоки двоичных данных, используйте функции-члены
istream &read(char *buf, streamsize num);
ostream &write(const char *buf, int streamsize num);
Функция
При выполнении следующей программы сначала в файл записывается массив целых чисел, а затем он же считывается из файла.
// Использование функций read() и write().
#include
#include
using namespace std;
int main()
{
int n[5] = {1, 2, 3, 4, 5};
register int i;
ofstream out("test", ios::out | ios::binary);
if(!out) {
cout << "He удается открыть файл.\n";
return 1;
}
out.write((char *) &n, sizeof n);
out.close();
for(i=0; i<5; i++) // очищаем массив
n[i] = 0;
ifstream in ("test", ios::in | ios::binary);
if(!in) {
cout << "He удается открыть файл.\n";
return 1;
}
in.read((char *) &n, sizeof n);
for(i=0; i<5; i++) // Отображаем значения, считанные из файла.
cout << n[i] << " ";
in.close();
return 0;
}