Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tworzenie strumienia

Ostatnio zmodyfikowano 2012-04-04 23:01
Autor Wiadomość
Chlorek
Temat założony przez niniejszego użytkownika
Tworzenie strumienia
» 2012-04-04 22:26:38
Zaciekawił mnie temat tworzenia strumienia. Jak stworzyć coś takiego, jak przykładowo w iostream:
C/C++
cout << "test\n";
Chodzi mi tu o to "cout <<", z tego co się udało mi dowiedzieć (czy trafnie to nie wiem), to opiera się to jakoś na strukturach/klasach. Proszę o jakieś przybliżenie tematu, sam przyznam się, że nie szukałem zbyt wiele w sieci, ale na kilka rzutów okiem widzę, że nic szczególnego nie ma. Gdyby ktoś mógł podać chociaż taki mały example, że przykładowo piszę "test << 10" i mam wartość 10 przypisaną do zmiennej "int wartosc".
P-53846
akwes
» 2012-04-04 22:31:03
Nie wiem czy dobrze zrozumiałem.
Strumienie to tylko pewna myśl logiczna organizacji czegoś, te kreski to tylko przeładowany operator <<
P-53848
Chlorek
Temat założony przez niniejszego użytkownika
» 2012-04-04 22:32:38
No dobrze rozumiesz, jednak nie za bardzo rozumiem jak to wychwycić (to co "wrzucasz" w ten "strumień") i wykonać na tym jakieś operacje.
P-53850
akwes
» 2012-04-04 22:36:32
Strumień to strumień. To klasa dziedzicząca po klasie ios.


Zaraz Ci skrobnę jakiś przykład z przeładowaniem, bo widzę, że łączysz dwie rzeczy niepotrzebnie :) Zbyt sugestywny jest operator<< widocznie :) Bo taką samą funkcjonalność mógłby pełnić także inny operator.
P-53852
Chlorek
Temat założony przez niniejszego użytkownika
» 2012-04-04 22:38:18
Co do operatora to rozumiem tutaj jego znaczenie, podałem go jako przykład. I dziękuję za chęć pomocy :)
P-53853
akwes
» 2012-04-04 22:55:14
To jeszcze raz xD


Chodzi mi tu o to "cout <<", z tego co się udało mi dowiedzieć (czy trafnie to nie wiem), to opiera się to jakoś na strukturach/klasach.

cout to obiekt klasy ostream, stworzony wcześniej, obsługujący wyjście na ekran. Dane pobiera dzięki przeładowanemu operatorowi operator<<.


Gdyby ktoś mógł podać chociaż taki mały example, że przykładowo piszę "test << 10" i mam wartość 10 przypisaną do zmiennej "int wartosc".

No, tylko tutaj nie ma nic o strumieniach. Szybki przykład:
C/C++
#include <iostream>
#include <conio.h> // dla _getch();
using namespace std;

class CKlas
{
public:
    int Value;
    void operator <<( int a )
    {
        Value = a;
    }
   
} cint; // taka sobie nazwa, żeby wyglądało jak c(in), c(out) :)

int main()
{
    cint << 10;
    std::cout << cint.Value;
    cint << 15;
    std::cout << cint.Value;
   
    _getch();
    return 0;
}


1015


(to co "wrzucasz" w ten "strumień")

Wychwycić to można czymkolwiek, możemy sobie wybrać jaki operator będzie to dla nas robił, a może to być nawet zwykła funkcja. Kwestia jak strumień chce sobie to w sobie zapisać, bo przekazanie to po prostu kwestia ciała przeładowanego operatora.

Chodzi Ci o to jak jest zbudowany strumień? Jak przechowuje on w sobie, tam w środku dane i chcesz zrobić coś własnego? Czy chodzi Ci właśnie o sam zapis?
P-53857
Chlorek
Temat założony przez niniejszego użytkownika
» 2012-04-04 23:01:43
Chodzi mi raczej o zarys na czym to polega, nie jest mi to raczej do niczego potrzebne. Po prostu ludzka ciekawość "jak to działa". Teraz rozumiem i miło, że otrzymałem wyjaśnienie. Zamykam.
P-53862
« 1 »
  Strona 1 z 1