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

Vector - как сравнить записанные строки? - C++

Восстановить пароль Регистрация
 
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
26.01.2014, 09:36     Vector - как сравнить записанные строки? #1
Здравствуйте.

C++
1
2
3
4
5
std::vector<std::string> g_Test;
 
g_Test.push_back("One");    
g_Test.push_back("Two");
g_Test.push_back("Three");
Есть строка: char *sTest;

Как проверить есть ли в моем контейнере строка схожая с sTest ?

Логично, что пройтись циклом по всему контейнеру и сравнить строки, но какой итератор использовать для вектора, ведь у меня строки:

C++
1
for( int i = 0; i <= g_WorldModels.size; i++)
А как далее сравнить g_Test с sTest ? По сути at, но я не могу всунуть в string, integer = g_WorldModels.at(i)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.01.2014, 09:45     Vector - как сравнить записанные строки? #2
Преобразовать char* в std::string не судьба? А еще есть std::find
castaway
Эксперт С++
4838 / 2977 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
26.01.2014, 09:46     Vector - как сравнить записанные строки? #3
C++
1
2
3
4
5
6
7
8
9
10
11
    std::vector<std::string> vs;
 
    vs.push_back( "one" );
    vs.push_back( "two" );
    vs.push_back( "three" );
 
    for ( std::vector<std::string>::iterator it = vs.begin(); it != vs.end(); ++it ) {
        if ( *it == "two" ) {
            std::cout << *it << std::endl;
        }
    }
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
26.01.2014, 09:49  [ТС]     Vector - как сравнить записанные строки? #4
castaway, спасибо большое. Скажите пожалуйста, а этот способ быстрей ли будет?

C++
1
2
3
4
5
    for( auto iter = g_WorldModels.cbegin(); iter != g_WorldModels.cend(); iter++ )
    {
        if ( *iter == "two")
            break;
    }
Помойму из С++ 11 вычитал, что данный способ лучше.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11809 / 6788 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
26.01.2014, 09:50     Vector - как сравнить записанные строки? #5
Цитата Сообщение от pEntity Посмотреть сообщение
Помойму из С++ 11 вычитал, что данный способ лучше.
тогда уж
C++
1
2
3
for ( auto x: g_WorldModels )
   if ( x == "str" )
      ...
castaway
Эксперт С++
4838 / 2977 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
26.01.2014, 10:03     Vector - как сравнить записанные строки? #6
C++
1
2
3
    auto it = std::find( vs.begin(), vs.end(), "two" );
    if ( it != vs.end() )
        std::cout << *it << std::endl;
Цитата Сообщение от pEntity Посмотреть сообщение
Помойму из С++ 11 вычитал, что данный способ лучше.
А что именно там было написано, почему он лучше?
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
27.01.2014, 08:03  [ТС]     Vector - как сравнить записанные строки? #7
А какой итератор нужен, чтоб узнать в цикле на каком я щас контейнере ?

x ведь хранит строку, а мне нужен номер.

?

castaway, введите в гугле for ( auto C++ и первая ссылка на хабре. Просто тут удаляют линк на другие ресурсы.

Просто удобней вобщем-то.

Добавлено через 21 час 51 минуту
C++
1
2
3
4
5
2
3
for ( auto x: g_WorldModels )
   if ( x == "str" )
      ...
Если строка совпала, как узнать под каким номером x ?
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
27.01.2014, 08:13     Vector - как сравнить записанные строки? #8
Цитата Сообщение от pEntity Посмотреть сообщение
Если строка совпала, как узнать под каким номером x ?
Либо введите дополнительный счетчик, либо используйте сразу цикл по индексам (как в первом сообщении), а не через итераторы.
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
27.01.2014, 08:40  [ТС]     Vector - как сравнить записанные строки? #9
for( int i = 0; i <= g_WorldModels.size; i++)
? А как строку мою узнать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 08:48     Vector - как сравнить записанные строки?
Еще ссылки по теме:

Сравнить две строки на различия не учитывая кол-во пробелов и такие различия в буквах как о-и, н-т, в-д. C++
C++ STL. Map, vector. Строки
C++ Как сравнить две строки string, введенных с клавиатуры, и вывести на экран строку которая больше?

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11809 / 6788 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
27.01.2014, 08:48     Vector - как сравнить записанные строки? #10
C++
1
2
3
4
5
    for ( std::vector<std::string>::size_type i = 0 ; i < vs.size(); ++i ) {
        if ( vs[i] == "two" ) {
            //...
        }
    }
Yandex
Объявления
27.01.2014, 08:48     Vector - как сравнить записанные строки?
Ответ Создать тему
Опции темы

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