21.04.2008, 13:44
общий
это ответ
Здравствуйте, Arti777!
Вот решение с использованием библиотечной функции strtok.
Файл считывается в строковый буфер и разделяется на слова, которые сравниваются с эталоном. После окончания поиска выводится затраченное время.
Приложение:
#include <time.h>#include <string.h>#include <iostream>#include <fstream>using namespace std;int main(){ ifstream i_file("input.txt"); if (i_file.fail()) return -1; //--- размер файла i_file.seekg(0,ios::end); long size = i_file.tellg(); i_file.seekg(0,ios::beg); char *strbuf = new char[size+1]; strbuf[size] = ‘\0‘; i_file.read(strbuf,size); //--- запрашиваем слово char word[32] = ""; cout << "Search: "; cin >> word; long beg = clock(); //--- в цикле выводим все найденные слова for (char *found = strtok(strbuf,"\n\t (){}<>;,.:-=+-*/\"); found; found = strtok(0,"\n\t (){}<>;,.:-=+-*/\")) { if (!strcmp(found,word) ) cout << "Position: " << int(found-strbuf) << endl; } long end = clock(); cout << endl << "Search time: " << end - beg << " ms" << endl; delete [] strbuf; i_file.close(); return 0;}