С++ - поиск подстроки в строке - подскажите функцию

Тема в разделе "WASM.BEGINNERS", создана пользователем Saessie, 2 окт 2008.

  1. Saessie

    Saessie New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    29
    Какую б функцию использовать, если:

    Есть строка String1, и подстрока String2. Надо написать программу на C++, которая бы смотрела, есть ли String2 в String1.

    То есть

    if ................
    {
    cout << "String1 contains String2" << "\n";
    }
    else
    {
    cout << "String1 does not contain String2" << "\n";
    }

    Что надо писать вместо ................? Использовать можно только сишные библиотеки.

    Буду очень благодарен, если программу напишите полностью - с инклюдами, объявлением переменных и т.д. - в общем, как в компиляторе.
     
  2. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    char *strstr( const char *str, const char *substr );
    западло. кури маны. ничего сложного.
     
  3. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Saessie
    Если на Билдере пишешь, то там для типа AnsiString тоже есть похожие функции (что-то вроде Substr).
     
  4. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Код (Text):
    1. string phrase="Franco's rain in Spain";
    2. string sought = "rain";
    3. int pos=phrase.find(sought); // pos=9
    4. if(pos!= string::npos)
    5.  //success
    6. else
    7.   //not found
     
  5. Saessie

    Saessie New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    29
    А что такое string и npos в четвертой строке? Компилирую g++'ом.
     
  6. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    #include <string> // ?
     
  7. Saessie

    Saessie New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    29
    Я пишу
    #include <string.h>

    А к чему вы собсна эта написали?
     
  8. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    и еще просите на C++...
    это я написал к
    класс string, работа со строками
    если pos != string::npos то строка не найдена надо полагать

    не знаю как в gcc, но в msvcpp 2005 string и string.h различаются
     
  9. Saessie

    Saessie New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    29
    gcc говорит, что ни string, ни npos не найдены. также у него тоже string и string.h различаются - первый вариант он вообще не воспринимает. :)

    Может, лучше делать через char* или char string[xxx]?
     
  10. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Saessie
    собирай g++ ным компилятором. и всё увидит.
    не забудь добавить строчку "use namespace std;" после всех инклюдов, если ты мой вышеприведенный пример будешь использовать. а вообще, это основы, и труд Страуструпа никто не отменял ^_^
     
  11. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    using namespace std; ?
     
  12. Saessie

    Saessie New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    29
    varnie, nobodyzzz, огромное спасибо.