C++ Bc. 23 cpp: Porovnání verzí
Bez shrnutí editace |
m Stránka C plus plus Bc. 23 cpp přemístěna na stránku C++ Bc. 23 cpp |
(Žádný rozdíl)
|
Verze z 2. 9. 2006, 09:19
#include <iostream> #include <vector> #include <string> #include <sstream> void CSV_cteni(std::string csv, std::vector<std::string>& pole, char oddelovac=','); int main() { using namespace std; istringstream data( "1,101MA1G,3+3,8,\"z,zk\",*p,\"Matematika 1\",\"Doc. Kocandrlova\"\n" "1,151TGE1,3+3,6,\"z,zk\",p,\"Technicka geodezie 1\",\"Ing. Ratiborsky\"\n" "1,153OSYL,1+2,5,kz,p,\"Operacni system Linux\",\"Ing. Pytel\"\n"); vector<string> pole(8); string radek; while (getline(data, radek)) { CSV_cteni(radek, pole); for (int i=0; i<pole.size(); i++) cout << i << " " << pole[i] << endl; cout << endl; } } void CSV_cteni(std::string csv, std::vector<std::string>& pole, char oddelovac) { int n = 0; // index bezneho prvku ve vstupni retezci 'csv' const int N = csv.size(); for (int i=0; i<pole.size(); i++) { bool uvozovky = csv[n] == '"'; if (uvozovky) n++; std::string s; for(; n < N; n++) { if (csv[n] == '"') { // dvojice uvozovek oznacuje jeden znak '"' if (n+1 < N && csv[n+1] == '"') { // ulozim znak '"' a prejdu na dalsi symbol s += '"'; n++; continue; } // koncove uvozovky uvozovky = false; continue; } if (!uvozovky && csv[n] == oddelovac) { n++; break; } s += csv[n]; } pole[i] = s; } }
0 1 1 101MA1G 2 3+3 3 8 4 z,zk 5 *p 6 Matematika 1 7 Doc. Kocandrlova 0 1 1 151TGE1 2 3+3 3 6 4 z,zk 5 p 6 Technicka geodezie 1 7 Ing. Ratiborsky 0 1 1 153OSYL 2 1+2 3 5 4 kz 5 p 6 Operacni system Linux 7 Ing. Pytel
[ Zpět ]