• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapisywanie pliku z nazwą w zależności od podanego w programie loginu

0 głosów
1,268 wizyt
pytanie zadane 30 maja 2016 w C i C++ przez Dodkom Nowicjusz (140 p.)

Witam,

Chce zrobić prosty program, który po wpisaniu loginu i hasła będzie tworzył plik tekstowy, o nazwie loginu jaki wcześniej podaliśmy i w tym pliku zapisze login i hasło.

Pytanie brzmi jak zastąpić to:

plik.open("dane.txt",ios::out | ios::app);

Czymś co by tworzyło plik w zależności od loginu, inny niż "dane.txt".

Pozdrawiam.

2 odpowiedzi

+2 głosów
odpowiedź 30 maja 2016 przez arkus Bywalec (2,160 p.)

Zapisz login do zmiennej i użyj tego co już masz. 

Załóżmy, że zapisałeś login do zmiennej typu string. Metoda open() przyjmuje jako pierwszy argument tablicę znaków (char*), więc sama zmienna typu string nie przejdzie. Do tego przyda ci się metoda c_str(), która zamienia string na tablicę znaków.

#include <cstring>
// ...
std::string login;
std::cin >> login;
plik.open(login.c_str(), ios::out | ios::app);
// ...

 

komentarz 30 maja 2016 przez Dodkom Nowicjusz (140 p.)
Przed przeczytaniem twojej odpowiedzi to samo znalazłem w internecie.

W każdym razie działa :D

Dzięki.
komentarz 30 maja 2016 przez niezalogowany
Metoda open przyjmuje jako argument const char*(a nie char*) w C++98. W C++11(i nowszych) nie ma potrzeby konwertowania stringa na const char*(bo metoda c_str nie zamienia stringa na tablice char'ów), jako argument wystarczy string.
–2 głosów
odpowiedź 30 maja 2016 przez Lid$ Mądrala (6,300 p.)
Nie ładnie tak komuś kraść hasła xD
komentarz 30 maja 2016 przez Dodkom Nowicjusz (140 p.)
Nie rozumiem o co ci chodzi.

Dopiero zaczynam przygodę z c++ i gdy ćwiczyłem operacje na plikach natknąłem się na ten problem. Finalnie program ma wyglądać w taki sposób, że użytkownik podaje login hasło i gdy plik o tym loginie istnieje to program wczytuje wszystkie informacje jakie w tym pliku są. Natomiast jeżeli plik nie istnieje, tworzy go, po czym zadaje różne pytania, wiek, wzrost etc. A gdy następnym razem użyjemy tego loginu i hasła zamiast pytać, wczyta informacje z pliku. To ma być coś na bazie prymitywnej bazy danych.

Może program jest dziwny, aczkolwiek zauważyłem, że gdy tworze program ze swoim własnym pomysłem, lepiej zapamiętuje materiał z danego zakresu.

Jeżeli twierdzisz, że zamierzam komuś kraść hasła to albo nie przemyślałeś tego do końca albo żartujesz. Nie wiem, dokładnie co miałeś na myśli.

Bo jest wiele programów w sieci, które mógłbym wykorzystać do kradzieży haseł np taki co zapisuje znaki wpisanie na klawiaturze i działa w tle i np. uruchamia się ze startem systemu.

Mogłem na początku napisać, że np chodzi mi o imię i nazwisko, bo nie chodzi o nazewnictwo tylko o samą mechanikę, wtedy może nikt by się nie przyczepił...

Nadal czekam na pomoc.
komentarz 30 maja 2016 przez Lid$ Mądrala (6,300 p.)
Spokojnie, spokojnie żartowałem. Tutaj masz o tym jak się zapisuje plik http://cpp0x.pl/forum/temat/?id=641 Myślę, że to powinno wyglądać tak.. ktoś wpisuje login - dajesz go do zmiennej potem wpisuje hasło dajesz do drugiej zmiennej i potem w tym kodzie który tworzy plik podmieniasz nazwę na zmienną login i program od razu tworzy ten plik z nazwą login :D I teraz chcesz zapisać coś w nim.. a więc otwierasz plik do zapisu i każesz umieścić dane ze zmiennych login i haslo w pliku login.txt i tyle ;)
komentarz 30 maja 2016 przez Dodkom Nowicjusz (140 p.)

Nie wiem czy dobrze cię zrozumiałem, ale chodzi ci o to, żeby tutaj:

plik.open("dane.txt",ios::out | ios::app);

zamiast "dane.txt" dać nazwę zmiennej?

Jeśli tak, to próbowałem i nie działa.

komentarz 30 maja 2016 przez DragonCoder Nałogowiec (36,500 p.)
Ok. Rozumiem, że chcesz wczytać dane z pliku o nazwie hasło.txt. To zapisz tam hasło i login i jeżeli będą się zgadzać to wypisuje dane, czyli użyj pętli

plik.open("dane.txt",ios::out | ios::app);

Tutaj to ty decydujesz, jak nazwiesz ten plik. Zamiast dane.txt może być haslo.txt.
komentarz 30 maja 2016 przez Dodkom Nowicjusz (140 p.)
Chyba źle mnie zrozumiałeś. Chodziło mi o to żeby nazwa do pliku była ustalana za pomocą zmiennej podanej w programie. Ale już rozwiązałem problem.

Do zmiennej trzeba było dopisać .c_str ponieważ fstream przyjmuje tylko c-stringi.

Pozostało mi tylko dodać do zmiennej ".txt" żeby plik zapisywał się w odpowiednim formacie i wszystko działa jak należy.

Podobne pytania

0 głosów
0 odpowiedzi 156 wizyt

93,742 zapytań

142,680 odpowiedzi

323,299 komentarzy

63,328 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...