Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
#1

Найти подстроку в строке. - C++

24.06.2012, 08:49. Просмотров 1134. Ответов 5
Метки нет (Все метки)

Как мне найти какую-то подстроку в строке? Я использую функцию strstr, но у меня ничего не получается. В файле такая строка: qwertyuiopasdfghjkl.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "stdafx.h"
#include <iostream> 
#include <fstream> 
using namespace std; 
int main() 
{   setlocale(LC_ALL,"Russian"); 
    int x;
    ifstream infile; // входной поток
    infile.open("Text.txt");  // открываем файл
    char buffer[100]; 
    char str[10]; // вводим последовательность символов    
    cout << "Введите последовательность символов ( вводим на английском ) "; 
    cin >> str; 
        while(!infile.eof()) // считываем до конца файла 
        { 
            infile >> buffer; // считываем в буфер 
            if(strstr(str, buffer))  // сравниваем строки
            {
              cout << "Совпадение обнаружено " << buffer << endl; // совпадение обнаружено выходим из цикла                                
            } else
            { cout << "Совпадений нет"<< endl;}
        }
        
        system("Pause"); 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2012, 08:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти подстроку в строке. (C++):

Найти подстроку в строке - C++
у меня курсовая по turbo с мне надо сделать прогу поиска подстроки в строке помогите кто чем может заранее спасибо

Найти подстроку в строке - C++
#include &lt;iostream&gt; int main(){ char *ch=&quot;fdsfdsf&quot;; char *ch1=&quot;ddsfdsf&quot;; int i(0),pos(0); while(!ch){ if(ch==ch1) ...

Как эффективно заменить подстроку в строке на другую подстроку? - C++
И если у подстрок разная длина? есть проверенный готовый способ?

Найти в строке подстроку от символа 'm' до 'n' - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &quot;string.h&quot; using namespace std; void main(){ char mas=&quot;comanda&quot;; char...

Найти данную подстроку в данной строке - C++
есть две строки. ввожу &quot;pro&quot;,дальше ввожу другую строку &quot;fpross&quot;,если 2-ая строка содержит &quot;pro&quot;,то прога должна выдать 1,если нет 0. ...

Найти подстроку в строке без учета регистра - C++
Подскажите как найти подстроку в строке без учета регистра, а также без regex? Необходимо также иметь возможность искать после...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
24.06.2012, 09:47 #2
C++
1
2
3
4
5
6
7
8
9
10
11
#include<cstring>
using std::strtok;
 
char *tokenPtr;
tokenPtr = strtok(str, " ");//находим первое слово в строке str
 
while ( tokenPtr != NULL ) 
{ 
//сравниваешь полученную строку
tokenPtr = strtok( NULL, " " ); // находим следующее слово,разделённое знаком пробела
}
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
24.06.2012, 10:06  [ТС] #3
Цитата Сообщение от alexey31415 Посмотреть сообщение
1
2
3
4
5
6
7
8
9
10
11 #include<cstring>
using std::strtok;
char *tokenPtr;
tokenPtr = strtok(str, " ");//находим первое слово в строке str
while ( tokenPtr != NULL )
{
//сравниваешь полученную строку
tokenPtr = strtok( NULL, " " ); // находим следующее слово,разделённое знаком пробела
}
Понимаете, в том то и суть задания, найти определённую последовательность символов в строке, которая не разделена пробелами. Например в строке qweadhjehvjerhveihie нужно найти последовательность erh.

Добавлено через 1 минуту
Цитата Сообщение от alexey31415 Посмотреть сообщение
#include<cstring>
using std::strtok;
char *tokenPtr;
tokenPtr = strtok(str, " ");//находим первое слово в строке str
while ( tokenPtr != NULL )
{
//сравниваешь полученную строку
tokenPtr = strtok( NULL, " " ); // находим следующее слово,разделённое знаком пробела
}
]

Понимаете, в том то и суть задания, найти определённую последовательность символов в строке, которая не разделена пробелами. Например в строке qweadhjehvjerhveihie нужно найти последовательность erh.
Catstail
Модератор
22535 / 10940 / 1774
Регистрация: 12.02.2012
Сообщений: 18,078
24.06.2012, 10:12 #4
Мне кажется, что strtok - немного не то, что нужно. Ведь в исходной строке пробелов (разделителей) может и не быть...

Добавлено через 6 минут
Выше уже указали причину: strstr возвращает указатель. Поэтому нужно писать:

C++
1
if(strstr(str, buffer) != NULL)
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
24.06.2012, 10:31 #5
Цитата Сообщение от Catstail Посмотреть сообщение
Поэтому нужно писать:
У ТС также корректный вариант, только порядок аргументов у функции strstr - 1.строка для поиска, 2.искомая подстрока. У ТС же все наоборот.
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
24.06.2012, 10:41  [ТС] #6
Спасибо всем, всё работает!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2012, 10:41
Привет! Вот еще темы с ответами:

В строке с найти количество слов не содержащий подстроку - C++
В строке с найти количество слов не содержащий подстроку с2 вывести эти слова где с2=аб

Найти подстроку в строке вручную, не используя strstr, s.find и т.д - C++
Также требуется определить временную сложность алгоритма.

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

Найти запись подстроку в строке в файле до символа "\n" и вернуть её оттуда - C++
Не получается преобразовать строку в указатель на массив. Тонкостей увы не знаю таких операций. Подскажите. Изменения нужно внести в ф-ию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.06.2012, 10:41
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru