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

Как сравнить две переменные string - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.60
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
13.04.2010, 21:33     Как сравнить две переменные string #1
Есть две переменные типа string
в одной записано

C++
1
string X="AB BA  AS  AX";
В другой
C++
1
string Y="AB";
В строке X cимволы могут быть разделены одним или несколькими пробелами
строка Y всегда без пробелов и состоит из двух или трех символов

Как узнать что строка Y есть в одной из частей строки X которые разделены пробелами ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.04.2010, 21:38     Как сравнить две переменные string #2
С помощью метода find.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
13.04.2010, 22:00  [ТС]     Как сравнить две переменные string #3
Добавлено через 14 минут
пишу
C++
1
2
3
4
string X="AA  KK  QQ  JJ  TT";
 
string Y="AA";
int found=X.find(Y);
found получаеться всегда равно 0
почему ?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.04.2010, 22:07     Как сравнить две переменные string #4
nill, а должно быть по другому? find возвращает позицию первого вхождения.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
13.04.2010, 22:18  [ТС]     Как сравнить две переменные string #5
так и есть спасибо!
Но как тогда определить что совпадение есть если оно на нулевой позиции ?

и сейчас проверил когда делаю такой поиск
C++
1
2
3
4
string X="KA  AK";
 
string Y="AA";
size_t found=X.find(Y);
found возвращает значение 4294967295
хотя по идее оно должно быть 0
то есть пробелы не учитываються ?
а мне надо чтобы учитывались
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.04.2010, 22:30     Как сравнить две переменные string #6
nill, если строка не будет найдена find вернет npos:
C++
1
2
3
4
5
6
std::string X="KA  AK";
 
std::string Y="AA";
size_t found=X.find(Y);
if (found == std::string::npos)
 std::cout << "Not found";
Прочитай внимательно страницу по ссылке, которую я тебе дал.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.04.2010, 12:15  [ТС]     Как сравнить две переменные string #7
Теперь почти все поняно
А не подскажешь как начать поиск с определенной позиции

то есть

к примеру

C++
1
2
3
4
5
string X="AA  KK  АА  JJ  TT";
 
string Y="AA";
 
size_t found=X.find(Y);

АА нашлось на позиции 0
found=0;

а как продолжить поиск но не проверять позицию 0

твою ссылку на английском прочитал там нет этого случая

C++
1
2
3
found=str.find("needles are small",found+1,6);
  if (found!=string::npos)
    cout << "second 'needle' found at: " << int(found) << endl;
это совсем не то и к тому же у меня вылетает ошибка
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2010, 12:26     Как сравнить две переменные string
Еще ссылки по теме:

Нужно сравнить две переменные типа string C++
C++ Как сравнить два элемента массива типа string?
C++ Как сравнить две строки string, введенных с клавиатуры, и вывести на экран строку которая больше?

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
14.04.2010, 12:26     Как сравнить две переменные string #8
Цитата Сообщение от nill Посмотреть сообщение
А не подскажешь как начать поиск с определенной позиции
C++
1
found=str.find("needles are small", found+1);
Добавлено через 6 минут
Вот пример - программа считает число вхождений строки substring в строку string:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
int main()
{
    std::string string("aabd aab,ala aa");
    std::string substring("aa");
    size_t offset=0;
    size_t count=0;
    size_t size=substring.size();
    while((offset=string.find(substring, offset))!=std::string::npos)
    {
        ++count;
        offset+=size;
    }
    std::cout << count << std::endl;
    system("pause");
    return 0;
}
Yandex
Объявления
14.04.2010, 12:26     Как сравнить две переменные string
Ответ Создать тему
Опции темы

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