C++ Bc. 22 cpp: Porovnání verzí
m Stránka C plus plus Bc. 22 cpp přemístěna na stránku C++ Bc. 22 cpp |
m +kategorie programovani, c++ |
||
Řádek 74: | Řádek 74: | ||
1,153OSYL,1+2,5,kz,p,"Operacni system Linux","Ing. Pytel" | 1,153OSYL,1+2,5,kz,p,"Operacni system Linux","Ing. Pytel" | ||
[ [[C | [ [[C++ Bc. 22 | Zpět]] ] | ||
[[Kategorie:Programování]] | |||
[[Kategorie:C++]] |
Aktuální verze z 2. 9. 2006, 10:58
#include <iostream> #include <sstream> #include <vector> #include <cctype> typedef std::vector<std::string> Pole; std::string CSV_zapis(const Pole& pole, char oddelovac=','); int main() { using namespace std; // vstup: pocet poli; dale nasleduji jednotliva pole, kazde zapsane // na samostatnem radku 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"); int N; data >> N; Pole pole(N); getline(data, pole[0]); // preskocim zbytek prvniho radku while (getline(data,pole[0])) { for (int k=1; k < N; k++) { getline(data, pole[k]); } string csv = CSV_zapis(pole); cout << csv << endl; } } std::string CSV_zapis(const Pole& pole, char oddelovac) { std::string csv; for (int i=0; i<pole.size(); i++) { const std::string& p = pole[i]; // druhe a dalsi pole musi byt oddeleno if (i != 0) csv += oddelovac; // testuji, jestli pole musi byt uzavreno do uvozovek bool uvozovky = false; for (int i=0; !uvozovky && i<p.length(); i++) if ( p[i] == '"' || p[i] == oddelovac || std::isspace(p[i]) ) uvozovky = true; // <cctype> if (uvozovky) csv += '"'; for (int j=0; j<p.length(); j++) { csv += p[j]; // uvozovky se zdvojuji if (p[j] == '"') csv += '"'; } if (uvozovky) csv += '"'; } return csv; }
1,101MA1G,3+3,8,"z,zk",*p,"Matematika 1","Doc. Kocandrlova" 1,151TGE1,3+3,6,"z,zk",p,"Technicka geodezie 1","Ing. Ratiborsky" 1,153OSYL,1+2,5,kz,p,"Operacni system Linux","Ing. Pytel"
[ Zpět ]