[c++]Skrypt wyszukujący pliki, 2 problemy

Witam, mam do Was dwie prośby/pytania. Mianowicie:

Poniżej jest kod programu służącego do wyszukiwania plików na dysku.

#include 

#include 

#include 

#include 


using namespace std;


void WyszukajIWypisz(const string& szukaj, string scierzka, ostream & wyjscie);


int main(int argc, char *argv[])

{

    char start[4] = "@:\\";

    string wyszukanie;


    while (true)

    {

        clog<<"Wpisz nazwe obiektu, ktory ma zostac wyszukany na calym dysku\n"

              "twardym, lub wcisnij Ctrl + Z aby wprowadzic EOF\n->";

        getline(cin, wyszukanie);

        if (!cin) break;

        for (*start = 'A'; *start <= 'Z'; ++*start)

        {

            WyszukajIWypisz(wyszukanie, start, cout);


        }

        clog<<"Wyszukanie zakonczone\n"<
    }


    return 0;

}


void WyszukajIWypisz(string const & szukaj, string scierzka, ostream & wyjscie)

{

    DIR * fol;

    dirent * dir;


    if ((fol = opendir(scierzka.c_str())) == NULL) return;


    string temp;

    struct stat info;


    while((dir = readdir(fol)) != NULL)

    {

        temp = dir->d_name;

        if (temp == "." || temp == "..") continue;

        if (stat((scierzka + temp).c_str(), &info) != 0) continue;

        if (S_ISDIR(info.st_mode)) WyszukajIWypisz(szukaj, scierzka + temp + '\\', wyjscie);

        if (temp.find(szukaj) != string::npos) wyjscie<d_name<<'\n';

    }

    closedir(fol);

}

Po wpisaniu np. plik.txt program wyszukuje wszystkie pliki o tej nazwie i wyświetla ich ścieżki.

PROBLEM #1:

Co zrobić aby wyświetlone ścieżki zostały zapisywane do osobnych zmiennych tudzież do tablicy tak abym mógł je później wykorzystać.

PROBLEM #2:

Powiedzmy że ścieżka do plik.txt wygląda następująco: C:\plik.txt, co zrobić żeby wszystkie backslash’e “” w ścieżce zamieniły się na slash’e “/”. (w sensie gdy już będę miał wyizolowane ścieżki z #1)

Jeśli ktoś ma chociaż pomysł na to jak można te zagadnienia rozwiązać to proszę napisać.

AD1

Możesz użyć np. vector (ewentualnie statyczną tablice jeśli wiesz, że plików nie będzie więcej niż), w którym są stringi. Ze znalezieniem każdego kolejnego pasującego napisu wstawiasz go do vectora.

AD2

Najprościej iterujesz znak po znaku i jesli znak == ‘’ wstaw w to miejsce ‘/’.

Co do #2:

#include 

std::replace(str.begin(), str.end(), '\\', '/');

Dzięki za odpowiedź, ale chyba będziecie musieli mi jeszcze raz pomóc.

Zrobiłem vector za radą kostka i wykorzystałem push_back() do dodania ścieżki do tablicy ale wywala mi następujący błąd:

error: invalid use of void expression

Jedyne co zmieniłem w programie od ostatniego posta to:

#include 

[...]

std::vector tablica;

[...]

for (*start = 'A'; *start <= 'Z'; ++*start)

        {

            tablica.push_back(WyszukajIWypisz(wyszukanie, start, cout));

        }

WyszukajIWpisz “zwraca” typ void, wstawiasz to (a właściwie nic) do vectora, któremu zadeklarowałeś, że będziesz wstawiał string. W sumie chyba nie przejdzie. Co to za zmienna start, bo nie ogarniam, gdzie ona jest zadeklarowana.

EDIT. Dyski, dobra już ogarnąłem. Lekki zwis świadomości.