Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Martin
Neregistrovaný
Avatar
Martin:29.11.2013 20:03

Ahojte, řeším problém ohledně alokace paměti. Rád bych byl kdyby mi někdo pomohl jsem totiž v koncích a nic se mi nedaří alokovat.

#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
#include <new>

using namespace std;

typedef struct shop {
    long int id;
    string nazev;
    string popis;
    long int cena;
    long int pocet_kusu;
}shop;

int main()
{
    int velikost_pole = 0;
    int i = 0;
    shop shop[10];
    string proud;

    string file_in = "vstup"
    string pripona = ".csv";
    file_in = file_in + pripona;

    // Načtení ze souboru
    ifstream vstup_soubor;
    vstup_soubor.open(file_in.c_str(), ios::in);

    while(!vstup_soubor.eof())
    {

        getline(vstup_soubor, proud,';');

        if(proud.length() == 0) break;

        shop[i].id = atoi(proud.c_str());
        getline(vstup_soubor, proud,';');
        shop[i].nazev = proud;
        getline(vstup_soubor, proud,';');
        shop[i].popis = proud;
        getline(vstup_soubor, proud,';');
        shop[i].cena = atoi(proud.c_str());
        getline(vstup_soubor, proud,'\n');
        shop[i].pocet_kusu = atoi(proud.c_str());

        proud = "";
        i++;
        velikost_pole++;
    }
    vstup_soubor.close();

}

Mám pole 10 prvkové, rád bych byl aby se zvětšilo o 10 když v souboru bude více řádků a pokud dojde i následné rozšíření paměti tak opět se zvětší pole, takhle až do konce souboru. Zkoušel jsem to přes new - delete ale bez výsledku.

 
Odpovědět
29.11.2013 20:03
Avatar
Libor Šimo (libcosenior):29.11.2013 20:52

Neviem ako je to v c++, ale v céčku treba alokovať pole predom.

Nahoru Odpovědět
29.11.2013 20:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na
Lukáš Hruda:30.11.2013 11:48

Pole v tomto případě není příliž vhodná volba, pokud můžeš použij vector.
Pokud musíš používat pole, pak nejlepší bude když si nejdřív zjistíš počet řádků v souboru a pak teprve podle toho alokuješ pole o dané velikosti.

 
Nahoru Odpovědět
30.11.2013 11:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.