Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_13_14 / ЛАБ_13_C# / Лекция.doc
Скачиваний:
10
Добавлен:
02.02.2015
Размер:
454.66 Кб
Скачать

2.7 Считывание входных данных из массива и запись их в массив

В этом случае для операций ввода-вывода используются массивы байт. Выполняется это с помощью класса MemoryStream, конструктор которого имеет вид MemoryStream(byte[] buf) где

- bufмассив байтов, используемый в операциях ввода-вывода как источник/приемник информации. Размер buf должен обеспечивать размещение в нем размещаемых байт.

Ниже демонстрируется пример программы.

№ 13

// Работа с массивом байт - класс MemoryStream

using System;

using System.IO;

class MemStr {

public static void Main() {

byte[] storage = new byte[255];

// Создаем поток с ориентацией на память

MemoryStream memstrm = new MemoryStream(storage);

// Помещаем объект memstrm в оболочки StreamWriter

// и StreamReader

StreamWriter memwtr = new StreamWriter(memstrm);

StreamReader memrdr = new StreamReader(memstrm);

//Записываем данные в память с помощью объекта memwtr.

for(int i=0; i < 10; i++)

memwtr.WriteLine(" byte[" + i + "]: " + i);

// Ставим в конце точку.

memwtr.Write('.');

memwtr.Flush();

Console.WriteLine("\n Считываем данные прямо из массива storage: ");

//Отображаем напрямую содержимое памяти.

foreach(char ch in storage) {

if(ch == '.')break;

Console.Write(ch);

}

Console.WriteLine(

"\n Считываем данные посредством объекта memrdr: ");

// Считывем данные из объекта memstrm, используя

// средство чтения потоков.

memstrm.Seek(0, SeekOrigin.Begin); // Установка

// указателя позиции в начало потока.

string str = memrdr.ReadLine();

while(str != null) {

str = memrdr.ReadLine();

if(str.CompareTo(".") == 0)break;

Console.WriteLine(str);

} Console.WriteLine("\n\n\n ");

}

}

Рис 13 Результаты использования массива байтов в операциях ввода-вывода

2.8 Применение классов StringReader и StringWriter (строковые массивы)

Применение вместо байтовых массивов строковых позволяют применять известные методы ReadLine() и WriteLine().

Используются конструкторы StringReader(string str) и StringWriter(). Здесь str – строка, из которой должны считываться данные. Содержимое строки можно получить с помощью метода ToString().

Ниже приводится пример применения классов SrtingReader и StringWriter.

№ 14

// Применение StringReader и StringWriter

using System;

using System.IO;

class StrRdr

{

public static void Main()

{

// Создаем объект класса StringWriter

StringWriter strwtr = new StringWriter();

// Записываем данные в StringWriter-объект.

Console.WriteLine(" ");

for (int i = 0; i < 10; i++)

strwtr.WriteLine(" Значение i равно: " + i);

// Создаем объект класса StringReader.

StringReader strrdr = new StringReader(strwtr.ToString());

// Теперь считываем данные из StringReader-объекта

string str = strrdr.ReadLine();

while (str != null)

{

str = strrdr.ReadLine();

Console.WriteLine(str);

}

Console.WriteLine("\n\n\n ");

}

}

Рис14 Результаты применения строковых классов StringReader и StringWriter

Соседние файлы в папке ЛАБ_13_C#