646 Глава 11

outfile « "2*2= " « (2 * 2);

поместит в файл текст «2 * 2 = 4». Это произойдет потому, что левая операция «
поместит текст «2 * 2 = » и вернет outfile, после чего правая операция « будет
иметь вид

outfile « (2 * 2) ;

и добавит к тексту результат своего правого операнда.

Проверить работу этого и рассматриваемых далее операторов можно, напри-
мер, на следующем тестовом приложении. Разместите на форме компонент Memo,
кнопку и в обработчик ее события OnClick вставьте операторы:

char sin[80] ;

ofstream outfile("Test.dat");

if ( !outfile)
{

ShowMessage("Файл не удается создать");

return;

)
// операторы записи в файл, например:

outfile « "2 * 2 = " « 2 * 2;

// закрытие файла
outfile.close();

// открытие файла как входного потока
if stream infile("Test.dat");

if(!infile)
{

ShowMessage("Файл не удается открыть");

return;

}

Memol->Clear () ;

while(!infile.eof())
<

infile.getline(si,80);

Memol->Lines->Add(AnsiString(si)) ;

)

// закрытие файла

infile.close() ;

Подробное пояснение этих операторов вы найдете в главе 12 в разделе
12.9.3.1. А смысл их сводится к тому, что создается файл «Test.dat», связанный с
потоком outfile, затем в него заносится операциями « некоторый текст, после
чего файл закрывается. Затем он опять открывается, связываясь с потоком infile,
и строки из него считываются и переносятся в окно Memol.

Продолжим рассмотрение операции «. Последовательное применение опера-
ций поместить в поток (сцепленных или задаваемых самостоятельными оператора-
ми) приводит к занесению текстов в одну строку, как в рассмотренном выше при-
мере. Если требуется перейти на новую строку, то можно или ввести в текст сим-
вол конца строки '\п' или применить манипулятор потока endl (сокращение от end
line — конец строки). Например, операторы

outfile « "2 * 2 :\n" « (2 * 2) « "\n";

И

outfile « "2 * 2 :" « endl « (2 * 2) « endl;

дадут один и тот же результат: первая строка будет содержать текст «2*2:», вто-
рая — «4», а курсор файла будет переведен на третью строку.