Ako zvýšiť kapacitu string poľa

Programovacie jazyky, rady, poradňa...
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Ako zvýšiť kapacitu string poľa

Príspevok od používateľa Fata! ChaoS »

Ahojte, mám nasledovný kód:

Kód: Vybrať všetko

string retazec[N];
    cout << "Zadaj prvy retazec zo znakov O. (max 60): ";
    cin >> retazec[0];     
lenže ako som sa dozvedel jeden prvok môže mať len 15 znakov, ako sa to dá zvýšiť??
vvTF
Expert
Expert
Používateľov profilový obrázok
Príspevky: 151
Registrovaný: 27 apr 2006, 21:39

Príspevok od používateľa vvTF »

Neviem ako je to v C++ ale v C sa to da vyriesit cez pointre. Napriklad

int *pole =(int *) malloc(sizeof(int)); // zalokujes pamat o velkosti int cize ako keby pole[1]

a potom ked to chces zvacsit pouzies:

pole = realloc(pole,1 +sizeof(pole));

a nakoniec nezabudni pamat uvolnit pomocou free(pole);
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Dosť pochybujem, že sa string neprispôsobí automaticky veľkosti vstupných dát.
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Príspevok od používateľa Fata! ChaoS »

2 vvTF: nuž ty to máš napísané pre int pole, lenže ja to potrebujem pre string pole a tak som si to jasneže prepísal, ale zmena nenastala to asi preto, lebo ono to zvačšilo max prvkov a nie veľkosti tých prvkov, ale keď tam dám index [0] tak už píše chybu.

2 chrono: Čo tým presne myslíš? akože prvky sa vytvoria, ale dĺžka jedného pola je stále 15. Ak ak zapíšem dlhší retayec tak vyskočí tá tabuľka "neodeslít"

EDIT:
Zaujímavé ak dám priradiť hodnotu tak viem pridať viac znakov, ale keď robím vstup pomocou cin tak nie.
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

ehm nechapem co mas za problem ... chces do pola znakov o dlzke N zapisat viac znakov ako N?
no tak to ti asi tazko pojde .. teoreticky by to v Ccku aj ist malo .. akurat si ale prepises data v pamati a pravdepodobne to skonci chybou Access violation ..

do pola proste nenasukas viac prvkov ako si si zadefinoval
Rixsus
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 288
Registrovaný: 18 nov 2005, 19:40
Kontaktovať používateľa:

Príspevok od používateľa Rixsus »

ked to uz robis v c++ a potrebujes pridavat viac prvkov preco radsej nepouzijes vector???
vector<string> stringy;
a mozes si ich tam pridavat pokial ti staci pamat ...

alebo ak chces si sprav hned dvojrozmerne pole charov ... moznosti je kooopa ...
Napísať odpoveď