Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Верховный Тюлень
 Аватар для Speed Fighter
49 / 16 / 3
Регистрация: 29.03.2015
Сообщений: 208

Удаление подстрочки из строчки

29.03.2015, 19:20. Показов 1238. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здарова, мужики!
Я делаю следующее задание:
Нужно определить количество вхождений подстрочки в строчку и удалить все вхождения.
Я проанализировал много примеров, немножко литературы с нужными функциями и написал такую програмку:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <string>
#include <conio.h>
#include <stdlib.h>
#include <locale>
#include <iostream>
 
using namespace std; // Использование пространства имен std
 
 
int main()
{
    setlocale(0, "russian");
    int lens0, lens; // Длина строчки s и длина подстрочки s0
    string s, s0; // Объявление строчек
    cout << "Введите нужную строчку:" << endl; 
    cin >> s; // Вводим строчку
    cout << "Введите нужную подстрочку:" << endl;
    cin >> s0; // Вводим подстрочку
    lens = s.length(); // Определяем длину строчки
    lens0 = s0.length(); // Определяем длину подстрочки
    if ((lens <= lens0) || (lens == 0) || (lens0 == 0)) // Если длина подстрочки больше строчки или же длина строчки или построчки = 0, тогда выходим из программы
    {
        cout << "Вы ввели некоррекнтые условия!";
        return 1;
    }
    while (0)
    {
        int t = s.find(s0, 0); // Определяем позицию вхождения подстрочки в строчку 
        if (t == -1)
        {
            break;
        }
        s.erase(t, lens0); // Удаляем подстрочку из строчки
    }
    cout << "Результат:" << s << endl; 
    system("pause");
    return 0;
}
Однако есть проблема - не удаляются вхождения. Результат остается неизменным - это моя первоначальная строчка.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.03.2015, 19:20
Ответы с готовыми решениями:

Удаление нужной строчки из файла
Здравствуйте. Подскажите пожалуйста, как удалить нужную строчку из файла? Строчка является ключом. Например: Содержание...

Удаление нулевой(-ых) строчки и столбца из матрицы
Доброго времени суток! Помогите написать программу, которая проверяла бы матрицу на нулевую строчку и столбец, и, если таковые...

Запись в файл. удаление последней строчки
Записываю файл вектор построчно: myFile_tarif.open(&quot;Tarif.txt&quot;,std::ios_base::out | std::ios_base::trunc); if...

4
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.03.2015, 20:06
C++
1
2
3
    size_t t;
    while ((t = s.find(s0)) != string::npos)
        s.erase(t, lens0);
1
Верховный Тюлень
 Аватар для Speed Fighter
49 / 16 / 3
Регистрация: 29.03.2015
Сообщений: 208
29.03.2015, 20:27  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Код C++
1
2
3
* * size_t t;
* * while ((t = s.find(s0)) != string::npos)
* * * * s.erase(t, lens0);
А можно узнать, в чем недостаток моего кода?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.03.2015, 21:22
Лучший ответ Сообщение было отмечено Speed Fighter как решение

Решение

Ну во-первых, цикл while(0) не выполнится ни разу.
1
Верховный Тюлень
 Аватар для Speed Fighter
49 / 16 / 3
Регистрация: 29.03.2015
Сообщений: 208
30.03.2015, 06:14  [ТС]
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "stdafx.h"
#include <string>
#include <locale>
#include <iostream>
 
using namespace std; // Использование пространства имен std
 
 
int main()
{
    setlocale(0, "russian");
    int lens0, lens, t=0, k=0; // Длина строчки s и длина подстрочки s0, t - индикатор для цикла, k - счетчик вхождений
    string s, s0; // Объявление строчек
    cout << "Введите нужную строчку:" << endl;
    cin >> s; // Вводим строчку
    cout << "Введите нужную подстрочку:" << endl;
    cin >> s0; // Вводим подстрочку
    lens = s.length(); // Определяем длину строчки
    lens0 = s0.length(); // Определяем длину подстрочки
    if ((lens <= lens0) || (lens == 0) || (lens0 == 0)) // Если длина подстрочки больше строчки или же длина строчки или построчки = 0, тогда выходим из программы
    {
        cout << "Вы ввели некоррекнтые условия!";
        return 1;
    }
    while (t!= - 1) // Пока вхождения есть - удаляем их.
    {
        t = s.find(s0, 0); // Определяем позицию вхождения подстрочки в строчку 
        if (t == -1)
        {
            break;
        }
        s.erase(t, lens0); // Удаляем подстрочку из строчки
        k++;
    }
    cout << "Результат:" << s << endl;
    cout << "Число вхождений:" << k << endl;
    system("pause");
    return 0;
}
Вот, я сделал. Всем огромное спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2015, 06:14
Помогаю со студенческими работами здесь

Удаление (верхней) строчки
Всем Привет. Помогите решить вот такую проблемку....... Есть combobox1 , я хочу удалить из него верхнею строку. А код ...

Удаление строчки в таблице
Добрый день. Имеется табличка которая формируется динамически: &lt;?php if ($rer == '') { print '&lt;div class=&quot;alert...

Удаление нужной строчки из комбобокс
Как из КомбоБокс удалить нужную строку

Удаление строчки из файла по номеру
ребят пишу функцию которая удаляет строчку или строчки из файла по номеру function DEL { echo &quot;Выберите строку которую...

Добавление и удаление строчки текста на странице
Помогите написать на php (сам практически не знаю как). Надо, чтобы была строка ввода и кнопка &quot;отправить&quot;. По нажатию на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru