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

Определить наличие в строке подстроки - C++

Восстановить пароль Регистрация
 
xfxh
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 2
13.12.2013, 00:42     Определить наличие в строке подстроки #1
Здравствуйте, программа не правильно находит позицию подстроки введенной на русском, значение умножается в два раза, что я делаю не так, или оно так и должно работать?

Вывод при вводе строки на английском:
Кликните здесь для просмотра всего текста
Введите строку : Hello World

Введите подстроку для поиска : lo

Позиция подстроки = 3
Press <RETURN> to close this window...

На русском:
Кликните здесь для просмотра всего текста
Введите строку : Привет мир

Введите подстроку для поиска : ет

Позиция подстроки = 8
Press <RETURN> to close this window...

Код:
Кликните здесь для просмотра всего текста
C++ (Qt)
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
26
27
28
29
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
 
    string str;
    string inStr;
 
    cout << "Введите строку : " ;
    getline(cin,str);
 
    cout << endl << "Введите подстроку для поиска : ";
    getline(cin,inStr);
    cout << endl;
 
    size_t pos = str.find(inStr);
 
    if (pos != string::npos) {
        cout << "Позиция подстроки = " << pos << endl;
    } else {
        cout << "Подстрока отсутствует в строке" << endl;
    }
 
    return 0;
}


Добавлено через 14 минут
В общем добавил такой кусок и заработало как надо, но мне кажется это как-то не совсем правильно
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
    string RuPos;
 
    size_t pos = str.find(inStr);
    size_t RuPos = str.find_first_not_of( "абвгдеёжзийклмнопрстуфхцчшщыъьэюя" );
 
 
    if (RuPos != string::npos) {
        pos = pos / 2;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 00:42     Определить наличие в строке подстроки
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 22:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru