Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2011, 01:39   #1
Alifee
Новичок
Джуниор
 
Регистрация: 16.12.2011
Сообщений: 2
По умолчанию Удаление строки в C++.

Доброй ночи.
Имеется программа:

Код:
#include <iostream>
#include <string>
int main(){
    std::string s1, s2;
    std::cout << "s1: ";
    std::getline(std::cin, s1);   
    std::cout << "s2: ";
    std::getline(std::cin, s2);  
    size_t pos;
    if ( ( pos = s1.find(s2) ) != std::string::npos )
        s1.erase(pos, s2.size());
    std::cout << "s1 without s2: " << s1 << std::endl;
    getchar();
    return 0;
    getchar();    
}
1)Какую роль выполняет std::?
2)( ( pos = s1.find(s2) ) != std::string::npos )
s1.erase(pos, s2.size()); Можете объяснить что здесь происходит?
Alifee вне форума Ответить с цитированием
Старый 17.12.2011, 02:52   #2
Felian
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Alifee Посмотреть сообщение
1)Какую роль выполняет std::?
2)( ( pos = s1.find(s2) ) != std::string::npos )
s1.erase(pos, s2.size()); Можете объяснить что здесь происходит?
1) :: это обращение к пространству имён с именем слева (std), в котором находится то, что стоит справа (string, например). Изучи материал по ключевому слову namespace.
2)
s1.find(s2) ищет вхождение s2 в s1 и возвращает номер символа строки s1 - откуда начинается вхождение s2 (символы считаются с нуля). Результат помещается в pos.
string::npos - это значение возвращается функцией find(), если вхождение не обнаружено.
То есть в первой строке мы проверяем, входит ли подстрока s2 в строку 1, сравнивая pos с string::npos.
Функция erase удаляет символы, начиная с номера в первом параметре, количество задаётся вторым параметром. Таким образом, мы удаляем символы, начиная с pos в количестве s2.size() - размер искомой ранее подстроки.

Вывод: указанный код ищет подстроку в строке и вырезает её, в результате длина всей строки сокращается.
Felian вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление чисел из строки kuy Паскаль, Turbo Pascal, PascalABC.NET 1 30.10.2011 13:23
Удаление строки женя2010 Microsoft Office Excel 9 23.04.2010 16:23
Удаление элементов строки s2 из строки s1 Ueshua Общие вопросы C/C++ 4 20.12.2009 13:06
Удаление из строки program123 Помощь студентам 4 21.05.2009 12:52
Удаление строки Minton87 Общие вопросы Delphi 4 07.05.2009 02:32