Problem ze zmianą bieżącego katalogu (C++)

Witam. Napisałem mały programik w c++, taki zamiennik systemowego cmd.exe .

Koloruje inaczej wpisywany komendy, inaczej wyjście poleceń itd… itp…

Lecz mam kilka problemów:

  1. Mimo wydania polecenia

    cd jakiś_katalog

program nadal pozostaje w bieżącym. 2. Jak zrobić żeby polecenie było wpisywane zaraz obok ścieżki b.katalogu a nie w nowej lini (tak jak ma to miejsce w norm. cmd). Kod źródłowy:

#include 

#include 

#include 


using namespace std;


int main()

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);

    system("echo %date% %time% ");

    system("echo %CD%: ");


  string polecenie;

  string err;

         int a=1;

         while(a)

                 {

                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);

                 cout << ">>> ";

                 getline(cin,polecenie);

                 cout << "\n\n";

         if (polecenie == "end")

         {

                 a=0;

                 }

         else

         {

 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY);

                 switch(system(polecenie.c_str()))

                {

                 case 0:

                 err="OK";

                 break;

default:

                         err="ERROR";

                         break;

                         }

                 cout << "\n-----------------------------\n";

                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);

                 cout << err << "\n\n\n";

                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);

                 system("echo %date% %time% READY!");

                 system("echo %CD%: ");

          } 


                 }

}

korzystam z dev c++ 4.9.9.2, windows 7 oraz XP – Dodane 01.05.2009 (Pt) 14:43 – ok już rozwiązałem problem nie było łatwo ale może komuś się to przyda: użyłem funkcji substr() i chdir() a to kod który analizuje wprowadzone polecenie pod kątem występowania CD i pobiera ścieżkę, po czym wykonuje chdir

if (polecenie.substr(0,4) == "cd..")

                 {

                               chdir("..");

                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);

                 cout << "\n-----------------------------\n";

                               continue;

                               }


                 if (polecenie.substr(0,3) == "cd ")

                 {

                               ptch=polecenie.substr(3);

                               chdir(ptch.c_str());

                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);

                 cout << "\n-----------------------------\n";

                               continue;

                               }