Potřebuju poradit s vytvořením dynamického pole stringů.
Chtěl bych do něj ukládat názvy specifických souborů ve složce - a předem nevím kolik jich bude.
Zkoušel jsem to pomocí malloc i pomocí new ale v obou případech mi program zkolabuje.
PS: Chtěl bych to zkusit udělat pomocí pole a ne pomocí vektoru atp.
const int rozsah = 100; int pocet = 0; string *pole = (string*)malloc(rozsah * sizeof(string)); //pozdeji pri prohledavani slozky, najde soubor //a ma ulozit nazev, ale program spadne hned u prvniho souboru
pole[pocet]= soubor.name; pocet++
//k realokaci se program ani nedostane, ale myslim, //ze ji mam taky nejak spatne if(pocet>=rozsah) { pole = (string*)realloc(pole,(pocet+1)*sizeof(string)); }
Pomocí new jsem to zkoušel takto:
string *pole = new string[rozsah];
//pomoci new to funguje a uklada nazvy souboru, // ale jen do te doby nez prekroci rozsah // a ma zacit realokovat potom program zhavaruje pole[pocet]= soubor.name; pocet++
if(pocet>=rozsah) { pole = (string*)realloc(pole,(pocet+1)*sizeof(string)); }
Realokaci jsem použil z C, nevím jestli se dá velikost pole nějak realokovat v c++. Byl bych ale raději kdyby se mi to podařilo nějak udělat pomocí malloc a v případě, že bude souborů více než předem stanovený "rozsah" rozšířit pole pomocí realloc.
Poraďte prosím kde mám chybu.