C++ Bc. 22: Porovnání verzí
Bez shrnutí editace |
mBez shrnutí editace |
||
(Není zobrazeno 21 mezilehlých verzí od 2 dalších uživatelů.) | |||
Řádek 1: | Řádek 1: | ||
;CSV formát - zápis | |||
CSV formát ([http://en.wikipedia.org/wiki/Comma-separated_values Comma-separated values]) se používá pro zápis tabulek, kde každý řádek | CSV formát ([http://en.wikipedia.org/wiki/Comma-separated_values Comma-separated values]) se používá pro zápis tabulek, kde každý řádek | ||
tabulky je zapsán jako jeden řádek textového souboru (ukončený znakem '\n') a jednotlivé hodnoty v řádku jsou oddělovány znakem čárka (,) | tabulky je zapsán jako jeden řádek textového souboru (ukončený znakem '\n') a jednotlivé hodnoty v řádku jsou oddělovány znakem čárka (','). Kromě znaku čárka se jako oddělovač někdy používá také znak středník (';'). Středník místo čárky používá například tabulkový procesor Excel. | ||
Zjednodušená pravidla formátu CSV jsou: | |||
1. Každý záznam je umístěn v samostatném řádku, jednotlivá pole oddělena čárkou, za posledním polem se čárka neuvádí. Počet polí je v jednom souboru vždy konstatní. | 1. Každý záznam je umístěn v samostatném řádku, jednotlivá pole oddělena čárkou, za posledním polem se čárka neuvádí. Počet polí je v jednom souboru vždy konstatní. | ||
Řádek 15: | Řádek 16: | ||
zzz,yyy,"xxx" | zzz,yyy,"xxx" | ||
3. Jestliže pole obsahuje | 3. Jestliže pole obsahuje bílé znaky, znak uvozovky nebo znak čárka, musí být uzavřeno do uvozovek. Znaky uvozovky v poli se zdvojují | ||
"aaa","b""bb","cc,c" | "aaa","b""bb","cc,c" | ||
Řádek 23: | Řádek 24: | ||
Napište funkci, která ze zadaného seznamu polí vytvoří výstupní záznam ve formátu CSV | Napište funkci, která ze zadaného seznamu polí vytvoří výstupní záznam ve formátu CSV | ||
std::string CSV_zapis(const std::vector<std::string>& pole); | std::string CSV_zapis(const std::vector<std::string>& pole, char oddelovac=','); | ||
Správnou činnost funkce ověřte na demonstračním programu. | Správnou činnost funkce ověřte na demonstračním programu. | ||
Řádek 29: | Řádek 30: | ||
''' Příklad - vstup''' | ''' Příklad - vstup''' | ||
{|class="border" | |||
| 1 || 101MA1G || 3+3 || 8 || z,zk || *p || Matematika 1 || Doc. Kočandrlová | |||
+- | |- | ||
| 1 || 151TGE1 || 3+3 || 6 || z,zk || p || Technická geodézie 1 || Ing. Ratiborský | |||
|- | |||
| 1 || 153OSYL || 1+2 || 5 || kz || p || Operační systém Linux || Ing. Pytel | |||
|- | |||
|} | |||
istringstream | |||
data("8\n" // 8 je pocet poli | |||
"1\n101MA1G\n3+3\n8\nz,zk\n*p\nMatematika 1\nDoc. Kocandrlova\n" | |||
"1\n151TGE1\n3+3\n6\nz,zk\np\nTechnicka geodezie 1\nIng. Ratiborsky\n" | |||
"1\n153OSYL\n1+2\n5\nkz\np\nOperacni system Linux\nIng. Pytel\n"); | |||
''' Příklad - výstup''' | ''' Příklad - výstup''' | ||
.. | 1,101MA1G,3+3,8,"z,zk",*p,"Matematika 1","Doc. Kočandrlová" | ||
.... | 1,151TGE1,3+3,6,"z,zk",p,"Technická geodézie 1","Ing. Ratiborský" | ||
1,153OSYL,1+2,5,kz,p,"Operační systém Linux","Ing. Pytel" | |||
[ [[C++ Bc. | Zpět]] | [[C++ Bc. 22 cpp | C++]] | [[C++ Bc. 23|Další]] ] | |||
[ [ | [[Kategorie:Programování]] |
Aktuální verze z 18. 10. 2006, 13:42
- CSV formát - zápis
CSV formát (Comma-separated values) se používá pro zápis tabulek, kde každý řádek tabulky je zapsán jako jeden řádek textového souboru (ukončený znakem '\n') a jednotlivé hodnoty v řádku jsou oddělovány znakem čárka (','). Kromě znaku čárka se jako oddělovač někdy používá také znak středník (';'). Středník místo čárky používá například tabulkový procesor Excel.
Zjednodušená pravidla formátu CSV jsou:
1. Každý záznam je umístěn v samostatném řádku, jednotlivá pole oddělena čárkou, za posledním polem se čárka neuvádí. Počet polí je v jednom souboru vždy konstatní.
aaa,bbb,ccc zzz,yyy,xxx
2. Každé pole může být volitelně uzavřeno do uvozovek
"aaa",bbb,"ccc" zzz,yyy,"xxx"
3. Jestliže pole obsahuje bílé znaky, znak uvozovky nebo znak čárka, musí být uzavřeno do uvozovek. Znaky uvozovky v poli se zdvojují
"aaa","b""bb","cc,c"
Zadání
Napište funkci, která ze zadaného seznamu polí vytvoří výstupní záznam ve formátu CSV
std::string CSV_zapis(const std::vector<std::string>& pole, char oddelovac=',');
Správnou činnost funkce ověřte na demonstračním programu.
Příklad - vstup
1 | 101MA1G | 3+3 | 8 | z,zk | *p | Matematika 1 | Doc. Kočandrlová |
1 | 151TGE1 | 3+3 | 6 | z,zk | p | Technická geodézie 1 | Ing. Ratiborský |
1 | 153OSYL | 1+2 | 5 | kz | p | Operační systém Linux | Ing. Pytel |
istringstream data("8\n" // 8 je pocet poli "1\n101MA1G\n3+3\n8\nz,zk\n*p\nMatematika 1\nDoc. Kocandrlova\n" "1\n151TGE1\n3+3\n6\nz,zk\np\nTechnicka geodezie 1\nIng. Ratiborsky\n" "1\n153OSYL\n1+2\n5\nkz\np\nOperacni system Linux\nIng. Pytel\n");
Příklad - výstup
1,101MA1G,3+3,8,"z,zk",*p,"Matematika 1","Doc. Kočandrlová" 1,151TGE1,3+3,6,"z,zk",p,"Technická geodézie 1","Ing. Ratiborský" 1,153OSYL,1+2,5,kz,p,"Operační systém Linux","Ing. Pytel"