Avatar
Martin
Neregistrovaný
Avatar
Martin:

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):

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
Odpovídá na Martin
Lukáš Hruda (Luckin):

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.