Csv soubor a jak pracovat s ním – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Csv soubor a jak pracovat s ním – C / C++ – Fórum – Programujte.comCsv soubor a jak pracovat s ním – C / C++ – Fórum – Programujte.com

 

vaclav
~ Anonymní uživatel
31 příspěvků
2. 12. 2013   #1
-
0
-

Ahoj. Mám za úkol načíst CSV soubor a s ním pak pracovat, načíst bych ho načetl takhle

ifstream file ( "file.csv" )

mám ale za úkol s tím souborem pracovat, musím vypsat cenu nad 300. Vůbec netuším jak s následnými položky  v tom CSV pracovat, napadlo mě, že bych si vytvořil struct a do toho vytvořil proměnné s názvy co mám v tom CSV souboru, akorát zkrátka nevím jak je k tomu přiřadit, neznám funkce na práci s tím.

Potřebuji nakopnout jak s těmi složkami uvnitř pracovat.

Nahlásit jako SPAM
IP: 2001:718:1001:1c1:e07d:1b...–
2. 12. 2013   #2
-
0
-

csv má jednotlivé položky oddělené znakem ; (středník). Pracuje se s ním jako s textovým souborem. Asi bych soubor četl po řádcích, řádek bych podle ; rozdělil na řetězce vyjadřující jednotlivé položky. 

hu

Nahlásit jako SPAM
IP: 195.178.67.–
vaclav
~ Anonymní uživatel
31 příspěvků
2. 12. 2013   #3
-
0
-

takže ten struct který znám daleko sem se v programování nedostal, nepůjde použít? No nějak si nedokážu představit, když budu potřebovat třetí tu záložku kde bude cena, tak jako mám hledat dva středníky a za třetím bude to co potřebuji? A co pak, do něčeho uložit? Nebo mám každý řádek rozložit na jednotlivé pomocí toho středníku?

Nahlásit jako SPAM
IP: 2001:718:1001:1c1:2063:b3...–
2. 12. 2013   #4
-
0
-

Záleží na tom, co potřebuješ z těch dat použít. Pokud tě zajímá jen cena, nebo jestli máš vypisovat vše o položce kde je cena vyšší než něco. Pro první případ stačí v řádku najít cenu (je za druhým středníkem v řádku) a tu uložit do prosté proměnné.  V druhém případě rozdělíš řádek na položky a ty můžeš uložit např. do struktury.

Příklad jak na to rozdělení  http://stackoverflow.com/questions/5167625/splitting-a-c-stdstring-using-tokens-e-g

hu

Nahlásit jako SPAM
IP: 195.178.67.–
vaclav
~ Anonymní uživatel
31 příspěvků
2. 12. 2013   #5
-
0
-

aha, to by bylo nejlepší z mého hlediska, že bych si to rozdělil a ty hodnoty pak uložit do struktury, akorát ještě jak ty hodnoty uložím do struktury? z těch kódu tam moc chytrý nejsem :(

Nahlásit jako SPAM
IP: 2001:718:1001:1c1:2063:b3...–
2. 12. 2013   #6
-
0
-

Nedávno jsem tu popisoval, jak vytvořit pole struktur a bylo tam taky, jak přistupovat k jednotlivým položkám struktury. Pokud mám strukturu staticky, k položce přistupuji ve tvaru struktura.položka, pokud mám ukazatel pak ve tvaru ukazatel->položka. S položkou struktury pracuji stejně jako s proměnnou daného typu. Povídání o základních věcech v C a C++ se na internetu vyskytuje hromada, jen namátkou http://www.krokodyyl.wz.cz/programovani/prog12.php

To je školní úkol? Pokud ano, vše potřebné by mělo být v učebnici, co v učebnici nebylo by měl Google najít snadno a rychle.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
vaclav
~ Anonymní uživatel
31 příspěvků
2. 12. 2013   #7
-
0
-

struktury jsou zkoušel jak přistupovat k jejim položkám vím, jen mě zajímá jak z toho CSV souboru kde mám třeba tu cenu tak jak tu hodnotu zkrátka uložím do té struktury kde bude třeba int cena, abych pak k té cenně mohl přistupovat jakože struktura.cena a ta cena už by byla z toho CSV. Snad jsem to rozumně napsal :)

Nahlásit jako SPAM
IP: 2001:718:1001:1c1:2063:b3...–
2. 12. 2013   #8
-
0
-

Hned první ukázkový kód ukazuje, jak získat jednotlivé tokeny - položky z csv souboru:

int main() {
    std::vector<std::string> strings;
    std::istringstream f("denmark;sweden;india;us");
    std::string s;    
    while (std::getline(f, s, ';')) {  //zde čte jednotlivé tokeny z istringstream f
        std::cout << s << std::endl;  //zde je vypisuje. 
        strings.push_back(s);         //zde je skládá do vektoru, chová se to jako pole
    }
}

Není problém místo vypisování nebo ukládání do vektoru je ukládat do struktury, popř. konvertovat string na číslo a uložit do struktury. std::string dáš do Google a najdeš  http://www.cplusplus.com/reference/string/string/   a vlevo jsou i funkce pro konverzi na číslo, třeba stod - konvertuje na double .

hu

Nahlásit jako SPAM
IP: 195.178.67.–
vaclav
~ Anonymní uživatel
31 příspěvků
2. 12. 2013   #9
-
0
-

aha, děkuji, nicméně on tam má už předem napsané hodnoty

std::istringstream f("denmark;sweden;india;us");

ale já potřebuji z toho CSV souboru, protože když je někdo v tom CSV souboru přepíše, nebude to fungovat, ne?

Nahlásit jako SPAM
IP: 2001:718:1001:1c1:c175:b6...–
2. 12. 2013   #10
-
0
-

http://www.cplusplus.com/reference/sstream/istringstream/str/

hu

Nahlásit jako SPAM
IP: 188.95.60.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

Jak pracovat s array? — založil fix

Jak pracovat s dvěma poli — založil Paja2

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý