[C++] Strumienie

boraxis
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 30 gru 2013, o 14:02
Płeć: Mężczyzna
Lokalizacja: Gdańsk

[C++] Strumienie

Post autor: boraxis »

Witam was drodzy forumowicze! Mam do wykonania na studiach projekt lecz srednio wiem jak go ugryzc. Nie chodzi mi tutaj o gotowca tylko ogolne przedstawienie zarysu jak sie za to zabrac.
Napisany program w c++ ma analizowac plik w formacie SMTP i wychwycic z niej pewne informacje takie jak adresat emaila, data i godzina nadania, tresc i tytul wadomosci itd itd. Rozwiazanie musi zostac zapisane w utworzonym pliku tekstowym. i wygladac mniej wiecej tak(nie podaje tutaj wszystkich parametrow bo moim zdaniem to nie istotne):
Data i godzina nadania: 4 grudnia 2013, godz. 23:36
Nadawca: ...................................
adresaci:
Wiadomość do: ............................
Kopia do: .............................
Ukryta kopia do: .............................
Tytuł: “..........................”
Treść:
..................................................................
JEST WYSZCZEGÓLNIONE ZE NIE MOGE WCZYTAC CALEGO PLIKU NA RAZ.
W głowie mialem zamysl na zasadzie ze program mialbym wczytywac kazdy wyraz po kolei i gdy znalazlby slowo kluczowe, np "date", "from", albo "subject" to nastepujace po nim dane wczytywalby jako "szukane". Jak wspomnialem wczesniej prosze tylko o zamysl jak ten program zrobic bo na prawde mampustke w glowie. Zalaczam zarys pliku ktory moj program ma otwierac. Pozdrawiam i licze na odpowiedzi.

Ps.: Jak rozszyfrowac te "zaszyfrowane" adresy email i inne dane? w jakim formacie sa one podane?

Kod: Zaznacz cały

BCC: qwerty@gmail.com
Message-ID: <529FAD24.2060104@gmail.com>
Date: Wed, 04 Dec 2013 23:31:00 +0100
From: =?UTF-8?B?SXdvbmEgS29jaGHFhHNrYQ==?= <ia.qwerty@gmail.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.1.1
MIME-Version: 1.0
To: =?UTF-8?B?SXdvbmEgS29jaGHFhHNrYQ==?= <ibudzi@eti.pg.gda.pl>
CC: =?UTF-8?B?SXdvbmEgS29jaGHFhHNrYQ==?= <ia.qwerty@gmail.com>
Subject: =?UTF-8?B?V2lhZG9tb8WbxIcgdGVzdG93YQ==?=
References: <529FACF6.30502@gmail.com>
In-Reply-To: <529FACF6.30502@gmail.com>
X-Forwarded-Message-Id: <529FACF6.30502@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit


Oto wiadomość testowa, będąca załącznikiem do projektu nr 2 z Podstaw 
programowania.

pozdrawiam qwerty
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Strumienie

Post autor: Afish »

boraxis pisze: W głowie mialem zamysl na zasadzie ze program mialbym wczytywac kazdy wyraz po kolei i gdy znalazlby slowo kluczowe, np "date", "from", albo "subject" to nastepujace po nim dane wczytywalby jako "szukane".
Brzmi dobrze.
boraxis pisze: Ps.: Jak rozszyfrowac te "zaszyfrowane" adresy email i inne dane? w jakim formacie sa one podane?
Base64.
boraxis
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 30 gru 2013, o 14:02
Płeć: Mężczyzna
Lokalizacja: Gdańsk

[C++] Strumienie

Post autor: boraxis »

Dobra to wstepny zamysł mam. Moglibyście mi jeszcze powiedziec jak w c++ wczytywac po jednym wyrazie (ciagu znakow) oddzielonych znakami bialymi (spacja/enter). A co do tych zaszyfrowanych danych to jak je odszyfrowac? Komenda static_cast(format)<format>? Pozdrawiam i z gory dziekuje za odpowiedzi
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Strumienie

Post autor: Afish »

Scanfy i operatory >> strumieni domyślnie czytają do białego znaku.
boraxis
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 30 gru 2013, o 14:02
Płeć: Mężczyzna
Lokalizacja: Gdańsk

[C++] Strumienie

Post autor: boraxis »

Czyli aby to odkodowac mam wkleic cala funkcje ktora mi podales i uzyc jej na danych zmiennych? jesli tak to jak przykladowo wygladaloby jej uzycie na zmiennej o nazwie 'tekst'? Na dodatek jesli musialbym to skopiowac to troche sie martwie jak wytlumaczylbym sie z tego pani profesor :P 'znalazlem w necie i dziala!' Musialbym przeanalizowac kod a niektore frazy sa mi obce.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Strumienie

Post autor: Afish »

Nie "masz", a "możesz". Jak chcesz, to zaklep własne i po problemie, specyfikacja base64 jest jawnie dostępna.
base64_decode(tekst) - normalne wywołanie funkcji.
boraxis
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 30 gru 2013, o 14:02
Płeć: Mężczyzna
Lokalizacja: Gdańsk

[C++] Strumienie

Post autor: boraxis »

I to do mnie trafia! Dziękuje

-- 1 sty 2014, o 14:50 --

Uzywajac base64_decode() wyskakuje mi ze ta fraza jest zadeklarowana. Domyslam sie ze brakuje jakiejs biblioteki. Kiedy probuje deklarowac base64.h okazuje sie ze nie posiadam takiej. Jakies sugestie?-- 1 sty 2014, o 15:01 --Mam dodatkowo jeszcze jeden problem. Na pierwszy rzut oka wszystko jest okej, ale wyskakuje mi taki oto error
c:program files (x86)dev-cppmingw32mingw32inld.exe cannot open output file C:UsersaleksandraDesktopProjekt POP149127.exe: Permission denied
C:UsersaleksandraDesktopProjekt POPcollect2.exe [Error] ld returned 1 exit status
tomkoder
Użytkownik
Użytkownik
Posty: 75
Rejestracja: 8 gru 2013, o 12:20
Płeć: Mężczyzna
Lokalizacja: Warszawa
Pomógł: 19 razy

[C++] Strumienie

Post autor: tomkoder »

Co do:
boraxis pisze: Mam dodatkowo jeszcze jeden problem. Na pierwszy rzut oka wszystko jest okej, ale wyskakuje mi taki oto error
c:program files (x86)dev-cppmingw32mingw32inld.exe cannot open output file C:UsersaleksandraDesktopProjekt POP149127.exe: Permission denied
C:UsersaleksandraDesktopProjekt POPcollect2.exe [Error] ld returned 1 exit status
Zapewne masz otwartego execa poprzednio skompilowanego i próbujesz skompilowac ponownie - wywala błąd bo nie może tego execa zapisać.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Strumienie

Post autor: Afish »

boraxis pisze:Uzywajac base64_decode() wyskakuje mi ze ta fraza jest zadeklarowana. Domyslam sie ze brakuje jakiejs biblioteki. Kiedy probuje deklarowac base64.h okazuje sie ze nie posiadam takiej. Jakies sugestie?
A skopiowałeś porządnie kod ze stackoverflow?
boraxis
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 30 gru 2013, o 14:02
Płeć: Mężczyzna
Lokalizacja: Gdańsk

[C++] Strumienie

Post autor: boraxis »

Wybacz moje głupie pytanie, ale gdzie mam to wkleić, jak nazwać itd? Jestem troche zielony
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Strumienie

Post autor: Afish »

LihO praktycznie wszystko wyjaśnił w swojej odpowiedzi na SO. Aby zachować czystość projektu, utwórz pliki base64.h i base64.cpp, a następnie skopiuj dokładnie to, co wkleił. Zauważ, że podał Ci też sposób użycia, więc masz wszystko podane na tacy.
Jeżeli boisz się komplikacji przy podziale kodu na kilka plików, to po prostu wklej do swojego głównego pliku zawartość base64.cpp. Osobiście odradzam to rozwiązanie, aczkolwiek będzie ono poprawne.
Jeżeli boisz się używać std::vector<BYTE>, to użyj kodu podanego przez Johna Millikina, w tym przypadku musiałbyś sam zrobić odpowiedni plik .h z deklaracjami funkcji, albo po prostu wkleić wszystko do głównego pliku.
Jeżeli ciągle będziesz miał mętlik, to podaj, jakiego środowiska używasz.
ODPOWIEDZ