Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2018, 00:14   #1
Волера
 
Регистрация: 08.05.2018
Сообщений: 3
По умолчанию Поиск в текстовом файле предложений с заданной подстрокой

У меня получилось сделать поиск подстроки в строке, но в предложении не получается. Как сделать поиск в предложении? (Visual Studio 2010)
Код:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctime>
#include <stdlib.h>
#include <windows.h>
#include <fstream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
    
    char text[1024];
    char text1[1024];
    ifstream file("text.txt");
    if (file.is_open()) {
        cout<<"Введите текст для поиска: ";
        cin>>text1;
        while (file.getline(text, 1024)) {      
            if (strstr(text, text1))
            cout<<text<<endl;
        }
        file.close();
    } else 
        cout<<"Ошибка! Файла не существует!"<<endl;
 
    system("pause");
    return 0;
}
Волера вне форума Ответить с цитированием
Старый 08.05.2018, 06:34   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

1. Определяете что у вас является предложением.
2. Читаете предложение.
3. Ищите в прочитанном нужное.
p51x на форуме Ответить с цитированием
Старый 08.05.2018, 13:01   #3
Волера
 
Регистрация: 08.05.2018
Сообщений: 3
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
1. Определяете что у вас является предложением.
2. Читаете предложение.
3. Ищите в прочитанном нужное.
У меня получилось определить, что является предложением и вывести строку с этим предложением. В текстовом файле в первой строке у меня записано 2 предложения, во 2 и 3 строке по 1 предложению. Если я ввожу какое то слово из предложения 1 строки, то выводится вся строка целиком (т.е. оба предложения). Не могу сделать, чтобы она вывела нужное предложение.
Код:
char text[1024];
char text1[1024];
ifstream file("text.txt");
if (file.is_open()) {
	cout<<"Введите текст для поиска: ";
	cin>>text1;
	while (file.getline(text, 1024)) {
		size_t n=0;
		for (const char *p = text, *first; *p;) {
			while (*p == ' ' || *p == '\t') ++p;
			if ( n==0 ) first = p;
			++n;
			while (*p && !(*p == ' ' || *p == '\t' || *p == '.')) ++p;
			if (*p == '\0' || *p == '.') {
				while (*p == '\t' || *p == '.') ++p;			
				n=0;
				if (strstr(text, text1))
					cout.write(first, p - first)<<"\n";
			}
		}
	}
	file.close();
} else 
	cout<<"Ошибка! Файла не существует!"<<endl;

Последний раз редактировалось Волера; 08.05.2018 в 14:12.
Волера вне форума Ответить с цитированием
Старый 09.05.2018, 15:39   #4
Волера
 
Регистрация: 08.05.2018
Сообщений: 3
По умолчанию

*Выводится вся строка по предложениям. Два предложения, но на разных строках.
Волера вне форума Ответить с цитированием
Старый 14.05.2018, 09:14   #5
ezus
Пользователь
 
Регистрация: 08.05.2009
Сообщений: 78
По умолчанию

Твоя ошибка в том, что ты мыслишь категориями строк, а они здесь только мешают.
Рассматривай и анализируй не строки, а весь текст как одна строка, если ты можешь прочитать его весь целиком в память. Или читай посимвольно от точки до точки.
ezus вне форума Ответить с цитированием
Старый 22.05.2018, 11:12   #6
Imran520
Новичок
Джуниор
 
Регистрация: 22.05.2018
Сообщений: 1
По умолчанию

A also have same problem.
Imran520 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск предложений в текстовом файле (Delphi) axell24 Помощь студентам 5 22.10.2011 16:58
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
Поиск в текстовом файле! Straiker Паскаль, Turbo Pascal, PascalABC.NET 2 18.01.2009 10:07
Поиск в текстовом файле KaimaS Общие вопросы C/C++ 0 12.11.2008 17:39