int main(int argc, char *argv[]) { TStr BaseString = "/lfs/1/tmp/curis/week/QBDB.bin"; TFIn BaseFile(BaseString); TQuoteBase *QB = new TQuoteBase; TDocBase *DB = new TDocBase; QB->Load(BaseFile); DB->Load(BaseFile); TIntV QuoteIds; QB->GetAllQuoteIds(QuoteIds); int NumQuotes = QuoteIds.Len(); THash<TInt, TStrSet> PeakCounts; for (int i = 0; i < NumQuotes; i++) { TQuote CurQuote; if (QB->GetQuote(QuoteIds[i], CurQuote)) { TVec<TSecTm> Peaks; CurQuote.GetPeaks(DB, Peaks); TStr QuoteString; CurQuote.GetParsedContentString(QuoteString); TStrSet StringSet; if (PeakCounts.IsKey(Peaks.Len())) { StringSet = PeakCounts.GetDat(Peaks.Len()); } StringSet.AddKey(QuoteString); PeakCounts.AddDat(Peaks.Len(), StringSet); } } TIntV PeakCountKeys; PeakCounts.GetKeyV(PeakCountKeys); PeakCountKeys.Sort(true); for (int i = 0; i < PeakCountKeys.Len(); i++) { TStrSet CurSet = PeakCounts.GetDat(PeakCountKeys[i]); if (CurSet.Len() > 0) { printf("QUOTES WITH %d PEAKS\n", PeakCountKeys[i].Val); printf("#########################################\n"); THashSet<TStr> StringSet = PeakCounts.GetDat(PeakCountKeys[i]); for (THashSet<TStr>::TIter l = StringSet.BegI(); l < StringSet.EndI(); l++) { printf("%s\n", l.GetKey().CStr()); } printf("\n"); } } delete QB; delete DB; return 0; }
std::string Country_Data::UpdateDB(CString s) { //std::cout << "Beginning DataBase updating\n"; std::fstream BaseFile(s); if (!BaseFile.is_open()) // если файл не открыт return "‘айл не может быть открыт!\n"; // сообщить об этом int CurrentBaseElement = 0;//start parsing while (!BaseFile.eof()) { char Buf[1000]; int addr = 0; BaseFile >> Buf; int i = 0; while (Buf[i] != ',') { addr = addr * 10 + (int)Buf[i] - 48; i++; } Base[CurrentBaseElement].from.s_addr = addr; //std::cout << ip_addr.S_un.S_addr; //_getch(); //Base[CurrentBaseElement].from = inet_ntoa(ip_addr); //std::cout << "\n" << addr; //unsigned char bytes[4]; //bytes[0] = addr & 0xFF; //bytes[1] = (addr >> 8) & 0xFF; //bytes[2] = (addr >> 16) & 0xFF; //bytes[3] = (addr >> 24) & 0xFF; //std::cout << (char)bytes[3] << "." << (char)bytes[2] << "." << (char)bytes[1] << "." << (char)bytes[0] << "\n"; //_getch(); /* Base[CurrentBaseElement].from = (reinterpret_cast<char*>(bytes)); std::cout << Base[CurrentBaseElement].from<<" jabarda\n"; _getch(); */ addr = 0; i++; while (Buf[i] != ',') { addr = addr * 10 + (int)Buf[i] - 48; i++; } Base[CurrentBaseElement].to.s_addr = addr; //Base[CurrentBaseElement].to = inet_ntoa(ip_addr); //std::cout << "\n" << addr<<"\n"; //Base[CurrentBaseElement].to = (addr & 0xFF) + ((addr >> 8) & 0xFF) + ((addr >> 16) & 0xFF) + ((addr >> 24) & 0xFF); i++; //int num = 0; //Base[CurrentBaseElement].LongName = '\0'; //Base[CurrentBaseElement].ShortName.; Base[CurrentBaseElement].ShortName = ""; while (Buf[i] != ',') { Base[CurrentBaseElement].ShortName+= Buf[i]; i++; } i++; Base[CurrentBaseElement].LongName = ""; while (Buf[i] != ';') { Base[CurrentBaseElement].LongName+=Buf[i]; i++; } i++; //std::cout << Base[CurrentBaseElement].from << "\n" << Base[CurrentBaseElement].to << "\n" << Base[CurrentBaseElement].ShortName << "\n" << Base[CurrentBaseElement].LongName << "\n"; //_getch(); //std::cout << CurrentBaseElement << "\n"; CurrentBaseElement++; } BaseFile.close(); amount = CurrentBaseElement;//set data size return "Data update successfully"; }