Symulacja konsoli systemowej

0

Witam

Tak z nudów postanowiłem sobie napisać coś w stylu konsoli systemowej (cmd).
Jeśli wam się chociaż trochę nudzi to zapraszam do tematu :)
A więc konsola będzie wykonywała pare prostych poleceń w stylu dodaj/usuń/przejrzyj katalog poruszanie się po kaltalogach itp. (wszystko wirtualnie 4fun)

Całość będzie sterowana poleceniami typu np. MD nazwa - tworzy katalog

i właśnie nie wiem jak za te polecenia się zabrać, czy istnieje jakaś lepsza metoda niż to co wymyśliłem

// w petli glownej
getline(cin,komenda);
check(komenda);
if (check == 4) make_new(komenda);
// funkcja
int check(string s)
{
        if ((s[0] == 'm') && (s[1] == 'd') && (s[2] == char(32) && s.length() > 3) return 4;
}

czyli do funkcji podaje wpisaną komende i sprawdzam znak po znaku czy pasuje do wzorca czyli MD nazwa, jeśli tak to wzracam jakaś liczbę która odpowiada temu co dalej program ma robić...znów podaje komende i wyłuskuje nazwe i tworzę katalog...

Druga sprawa to usuwanie katalogow, czyli powiedzmy znajduję się w C:\katalog1\ i chce usunąć katalog1 ale w nim znajduje się xx innych katalogow z podkatalogami
Chociaż jeszcze nie doszedłem do tego od strony praktycznej to nie mam w ogole pomysłu jak sprawnie wszystko usunąć.

Dodam że katalogi są obiektami jednej klasy a całość będę tworzył na stosie i umieszczał w wektorze klas...

0

Długa droga przed Tobą kolego. Pomijając fakt, że Twój przykład się nawet nie skompiluje, to co jeżeli do funkcji check przekażesz pustego stringa? nie lepiej byłoby przekazać argument s przez referencję unikając kopiowania całego napisu? Poza tym stringi możesz porównywać operatorem == , czyli w Twoim przypadku np.

if(s.substr(0, 2) == "md") return 4;

Nie wiem, czy dobrze zrozumiałem, ale program nie ma działać na fizycznych danych, tylko na jakichś wirtualnych tak? Jeżeli na wirtualnych, to potrzebujesz do tego odpowiedniej struktury danych(drzewa), w której przechowasz te wirtualne pliki.

0

pisałem z palca nie kopiowałem więc z błędami wyszło , co do pustego stringa miałem inne zabezpieczenie które pomija całość pętli jeśli string jest pusty.

właśnie takiego czegoś szukałem:) czytalem o substr ale nie wiedziałem że w ten sposób można dzieki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1