Хелпикс

Главная

Контакты

Случайная статья





return 0;. using namespace std;. int main(). const int len = 81;. char word[len], line[len], end_word[] = done;. return -1;. while (strcmp(line, end_word));. char delims[] = ,.!? /<>|()*:;\;. char *token;. while (f.getl



return 0;

}

Рассмотрим другой подход к решению предложенной выше задачи. В библиотеке C++ есть функция strtok, которая разбивает предложенную строку на лексемы в соответствии с заданным набором разделителей. При ее использовании нет необходимости выделять и проверять начало и конец слова. Потребуется лишь сравнит с искомым словом, слово, выделенное strtok. Для этого просто необходимо задать разделители.

Пример 11.4 Поиск вхождения слова в файле с помощью strtok

#include "stdafx.h"

#include <iostream>

#include <fstream>

#include <string>

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian");

const int len = 81;

char word[len], line[len], end_word[] = "done";

 

//пересоздадим файл и откроем для чтения/записи

fstream f("lab11.txt", ios::in | ios::out | ios::trunc);

if (!f)

{

cout << "Ошибка открытия файла" << endl;

return -1;

}

//введем несколько строк для дальнейшего поиска в них

do

{

cin >> line;

f << line << endl;

}

//продолжаем пока не введем done

while (strcmp(line, end_word));

cout << "Введите слово для поиска: ";

cin >> word;

 

//сбрасываем бит-признак конца файла eofbit

f.clear();

//сбросим файловый поток на начало

f.seekg(0);

//Список разделителей

char delims[] = ",.!? /<>|()*:;\"";

 

//Указатель на начало слова

char *token;

//счетчик вхождения слова

int wc = 0;

//читаем построчно и ищем слово word в строке

while (f.getline(line, len))

{

//находим первый символ не из разделителей

//находим первый символ не из разделителей

token = strtok(line, delims);

//проверяем, остались ли еще слова

while ( token != NULL )

{

//strtok заменяет символ после разделителя

//на NULL поэтому можно сравнивать искомое и

//найденное слово



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.