C++ načtení libovolného řádku z CSV

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Shadow2334
Začátečník
Začátečník
Uživatelský avatar
Registrován: 04. led 2007
Bydliště: Rožnov pod Radhoštěm

C++ načtení libovolného řádku z CSV

Příspěvek od Shadow2334 »

Ahoj, potřeboval bych poradit, jak v Céčku docílit toho, abych mohl načíst třeba druhý řádek z CSV souboru, bez toho aby program načetl všechny ostatní.

Díky za pomoc :)

EDIT:
Napadlo mne, že by se celý CSV dal načíst do pole a pak z toho zobrazit pouze ty a ty prvky.. ale jak to CSV načíst do toho pole? :-D
Maranov
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 21. črc 2006

Re: C++ načtení libovolného řádku z CSV

Příspěvek od Maranov »

Blbě. Pokud vím, existuje jen seek fungující po byte, ne po řádcích, ten by fungoval jen v případě, že by byly všechny řádky stejné.

Řešením tedy je načítat pom. getline(), dokud nenarazíš na správný řádek (podle jeho formátu nebo podle pořadového čísla, jak je libo).

Pro nějaké složitější náhodné úpravy by nebylo od věci načíst soubor celý, otázka je, co děláš. Samozřejmě, ideální by pak bylo načíst to CSV jako dvourozměrné pole, s řádky a sloupci, jak se CSV interpretuje.
DESKTOP: C2D E8200 (pasivně); ATI HD 3870 (AC S1, 120 fan@5V); 4GB RAM; OCZ Vertex2 SSD 64GB; 320+320+250GB JBOD (odhlučněno); 2x FSC P19-2 (2056x1024)
MOBILE: Lenovo Thinkpad T420 4177 CTR, Crucial M4 SSD 128GB, 6GB RAM; FSC P19-2; Logitech G400
POCKET: Nokia Hulmia 800; Hitachi 500GB@Scythe Kamazo 2 (eSATA); Creative EP-630
AUDIO: Sennheiser HD 555 (foam mod), NuForce Icon µDAC, FLAC, ReplayGain, f2k

"A Man's mortality is a compass that points his way in life."
Shadow2334
Začátečník
Začátečník
Uživatelský avatar
Registrován: 04. led 2007
Bydliště: Rožnov pod Radhoštěm

Re: C++ načtení libovolného řádku z CSV

Příspěvek od Shadow2334 »

díky za reakci, už jsem to vyřešil následovně, ale s tím načením do toho pole by to bylo dobré.. musím to ještě nějak prokoumat.

Kód: Vybrat vše

int main ()
{
    ifstream inFile ("vyrobky.csv");
    string line;
	ofstream myfile;
	myfile.open ("nakup.csv", ios::out | ios::app);
    int linenum = 0;
	int cislo;
	cout << "Zadejte cislo polozky, kterou chcete objednat: ";
	cin >> cislo;
	cout << "\nKod\tNazev\t\tCena za kus"<< endl;
	while (getline (inFile, line) && cislo!=2)
    {
		
		cislo--;
        linenum++;
        istringstream linestream(line);
        string item;
        int itemnum = 0;
        while (getline (linestream, item, ';'))
        {
            itemnum++;
        }
    }
    while (getline (inFile, line) && cislo!=1)
    {
		cout << "";
		myfile << "";
		cislo--;
        linenum++;
        cout << "";
		myfile << "\n";
        istringstream linestream(line);
        string item;
        int itemnum = 0;
        while (getline (linestream, item, ';'))
        {
            itemnum++;
            cout <<item << "\t";
			myfile << item << ";";
        }
    }
	myfile.close();
	inFile.close();
	flushall();
	getchar();
    return 0;
}
Odpovědět

Zpět na „Programování a web“