SaDFromSpb
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору #include <iostream> #include <fstream> #include <sstream> using namespace std; #define STRINGBUFFER_SIZE 256 #define P_WORD "price" //функция "проглатывает" строку str, если она равна "price" //если же она начинается со слова "price", то поток **in_s //инициализируется тем что после него bool parse(const char* str, istringstream** in_s) { if (strcmp(str, P_WORD)==0) return true; else { int wlen = strlen(P_WORD); int slen = strlen(str); if (slen > wlen && memcmp(str, P_WORD, wlen)==0) { const char* p = &str[wlen]; delete *in_s; *in_s = new istringstream(p); return true; } else { return false; } } } int main(int argc, char* argv[]) { ifstream in_f ("Svod.txt"); ofstream out_f; if (!in_f) { cerr << "ERROR: Can't open \"input.txt\"" << endl; return 1; } char sch[STRINGBUFFER_SIZE]; int line_q = 0; while (in_f.getline(sch, STRINGBUFFER_SIZE)) { istringstream* s = new istringstream(sch); line_q++; while (*s >> sch) { if (parse(sch, &s)) { if (!(*s >> sch)) { cerr << "ERROR: There is nothing after \"price\" at line " << line_q << endl; return 2; } out_f.open(strcat(sch, ".txt")); out_f.close(); delete s; break; } } } return 0; } | Всего записей: 209 | Зарегистр. 22-06-2004 | Отправлено: 02:08 04-02-2006 | Исправлено: SaDFromSpb, 02:41 04-02-2006 |
|