[C++] Mały problem z wydzielaniem substringów i rzutowaniem


(DanKar) #1

Witam serdecznie,

Mam za zadanie napisać w języku C++ listę TODO, czyli rzeczy do zrobienia. Program ma pobierać i zapisywać zadania z pliku. No i tutaj pojawia się problem... otóż pojedyncze zadanie w pliku ma postać:

17-06-2008;22:17;wyslac projekt;10;

Całość wczytuje sobie do jakiejś zmiennej pomocniczej typu string, a następnie z całości wycinam odpowiednie substringi do kolejnych zmiennych pomocniczych. No i tutaj pojawia się problem, gdyż, chce, aby program sortował mi zadania wd daty, a następnie godziny. Rzutuje w następujący sposób stringi do inta:

stringstream konwersja(tmp_termin_d);

         konwersja >> zadanie.termin_d;

Ale niestety przy rzutowaniu np. miesiąca (06) usuwa na początku zero, tutaj może i nie ma to żadnego znaczenia, ale co z godziną, a konkretnie wartościami odpowiadającymi minutom... jeśli będzie np. 22:05, to w programie przy rzutowaniu obetnie mi zero i zostani 22:5 :? Może macie jakiś pomysł, jak rozwiązać ten problem? Może istnieje jakaś inna metoda wczytywania z pliku, czy też rzutowania?

Z góry bardzo dziękuje za pomoc.

Pozdrawiam!


(system) #2

Chyba masz pewien problem w odróżnianiu napisu od liczby.

Możliwe że pomoże ci następujący kawałek kodu:

#include 

#include 

using namespace std;


int main()

  {

   int rok=2008,miesiac=8,dzien=6,godzina=7,minuta=5;

   cout<
       <<' '<
   cin.get();

   return 0;

  }

(Fiołek) #3

Tylko co za różnica, czy będzie to "05", czy "5" jak to jedno i to samo?


(Krzysiekaczor) #4

Duża, przecież 12:5 prędzej pasuje do 12:50 niż do 12:05.


(system) #5

Przecież trzymasz to jako liczbę. Dla liczby 5, 05, 005, 0000000005 to jest jedno i to samo.


(Awes) #6

Abstrahując od powyższych wypowiedzi, problem możesz rozwiązać zapisujac do pliku datę w postaci timestamp-a, czyli jednej liczby. Poźniej na potrzeby wyświetlania możesz ją sobie bez problemów formatować wg uznania.

Poza tym, jeżeli planujesz sprawdzać czas wpisów, np. czy już minął, to zdecydowanie timestamp będzie najwygodniejszy, bo wystarczy porownać go z wynikiem funkcji time().