Operacje wejścia-wyjścia - omówienie

Nasza ocena:

3
Wyświetleń: 518
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Operacje wejścia-wyjścia - omówienie  - strona 1 Operacje wejścia-wyjścia - omówienie  - strona 2 Operacje wejścia-wyjścia - omówienie  - strona 3

Fragment notatki:

Operacje wejścia-wyjścia
Visual C++ 6.0
Większość operacji wejścia-wyjścia można wykonać za pomocą operatorów. Do specjalnych celów przydają się niekiedy funkcje wejścia-wyjścia.
Funkcje get i put
inp.get(chr)
Wprowadza ze strumienia inp najbliższy znak (w tym znak odstępu) i jego kod przypisuje zmiennej chr typu char. Dostarcza odnośnik do inp.
out.put(chr)
Wyprowadza do strumienia out znak o kodzie chr. Dostarcza odnośnik do out.
#include
#include
#include
int main(void)
{
ifstream inp;
inp.open("Data.txt", ios::in);
if(!inp.is_open())
return -1;
char chr;
while(inp.get(chr))
cout.put(chr);
return 0;
}
Program kopiuje na konsolę zawartość pliku Data.txt. Kopiowanie odbywa się znak-po-znaku.
Funkcje read i write
inp.read(ptr, len)
Wprowadza ze strumienia inp ciąg len najbliższych znaków i ich kody umieszcza w tablicy znakowej o elemencie wskazywanym przez ptr. Dostarcza odnośnik do inp.
out.write(ptr, len)
Wyprowadza do strumienia out ciąg len znaków z tablicy znakowej, począwszy od elementu wskazywanego przez ptr. Dostarcza odnośnik do out.
inp.gcount()
Dostarcza liczbę znaków wprowadzonych za pomocą ostatnio wywołanej funkcji read albo getline.
#include
#include
const int Size = 10;
int main(void)
{
ifstream inp;
inp.open("Data.txt", ios::in);
if(!inp.is_open())
return -1;
char buf[Size];
while(true) {
inp.read(buf, Size);
int len = inp.gcount();
if(len 0)
cout.write(buf, len);
if(len

(…)

…, zadeklarowanych w pliku nagłówkowym strstream.h.
Argumentem konstruktora klasy istrstream jest wskaźnik łańcucha. Argumentami konstruktora klasy ostrstream jest wskaźnik elementu tablicy znakowej i maksymalna liczba jej elementów, które mogą być użyte w operacji wyjścia.
Uwaga: Operacja wyjścia nie zapisuje znaku końca łańcucha. Należy to wykonać jawnie, na przykład za pomocą symbolu ends.
#include <iostream.h>
#include <strstream.h>
int main(void)
{
char data[] = "10 20 30";
istrstream(data) >> a >> b >> c;
char buf[100];
ostrstream(buf, sizeof(buf)) << "Sum = " << a + b + c << ends;
cout << buf << endl;
return 0;
}
Przetwarzanie wyrywkowe
Wyrywkowo przetwarza się zazwyczaj pliki binarne. Plik binarny otwiera się w trybie ios::in | ios::out | ios::binary
Operacje na pliku wykonuje się za pomocą funkcji read…
…;
rio.seekp(0, ios::beg);
for(int i = 0; i < count ; i++) {
rio.read((char *)&tmp, Size);
cout << tmp << endl;
}
return 0;
}
Program tworzy plik binarny, do którego zapisuje dane pochodzące pliku Data.txt. Następnie dane sortuje i wyprowadza.
Ponieważ funkcje read i write oczekują argumentów typu char * i int, wskazana zmiennych całkowitych (np. &tmp) poddano jawnej konwersji do typu char *.

… i write.
#include <iostream.h>
#include <fstream.h>
const char *const SrcName = "Data.txt";
const int Size = sizeof(int);
const char *const TrgName = "Random";
int main(void)
{ ifstream inp;
inp.open(SrcName, ios::in | ios::nocreate);
if(!inp.is_open()) {
cout << "Source failure" << endl;
return -1;
}
ofstream out;
out.open(TrgName, ios::out | ios::binary);
if(!out.is_open()) {
cout << "Target failure…
... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz