Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

13.04.2010, 21:33. Просмотров 5510. Ответов 7
Метки нет (Все метки)

Есть две переменные типа string
в одной записано

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

Как узнать что строка Y есть в одной из частей строки X которые разделены пробелами ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2010, 21:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сравнить две переменные string (C++):

Нужно сравнить две переменные типа string - C++
Мне нужно сравнить 2 переменные типа string,нашел эту функцию,но почему то у меня выдает ошибку Error:class "std...

Как сравнить две строки типа string? - C++
C типом char все просто. Поиск по Фамилии и имени. char name,name1,address, dom; int h=0; cout<<"Введите Фамилию "; ...

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

Сравнить две переменные и изменить их значения по результатам сравнения - C++
Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то...

Определить массив, создать две переменные типа указатель и сравнить - C++
Определить одномерный массив размерностью 10 элементов, * значение которых целого типа (заполнять вручную). * Создать две переменные...

Как сравнить введенную string с константой string - C++
Как сравнить переменную String, вводимую с клавиатуры, с const string объявленную в начале кода? #include <iostream> #include...

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

и сейчас проверил когда делаю такой поиск
C++
1
2
3
4
string X="KA  AK";
 
string Y="AA";
size_t found=X.find(Y);
found возвращает значение 4294967295
хотя по идее оно должно быть 0
то есть пробелы не учитываються ?
а мне надо чтобы учитывались
0
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.04.2010, 22:30 #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";
Прочитай внимательно страницу по ссылке, которую я тебе дал.
1
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.04.2010, 12:15  [ТС] #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;
это совсем не то и к тому же у меня вылетает ошибка
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
14.04.2010, 12:26 #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;
}
1
14.04.2010, 12:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2010, 12:26
Привет! Вот еще темы с ответами:

Объясните как правильно сравнить переменные типа char - C++
Испульзую (strcmp(a.StNazn,c)==0) Не работает. Если поменять на (strcmp(a.StNazn,c)&lt;0) Работает, но как-то не правильно. ...

Как сравнить две строки? - C++
Написал программу но не проходит сравнение вот это сравнение: bool flight_weight(char* flight) { if (predmet==flight) return...

Как сравнить два char string - C++
подскажите сделал задачу которая проверит является ли данная строка палиндромом вот код #include &lt;iostream&gt; #include &lt;cstring&gt; ...

Как сравнить элементы массива string и char? - C++
Есть два массива: mas_ascii и str содержащий текст с файла char mas_ascii ; for (int i = 0; i &lt; 256; ++i) { mas_ascii...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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