Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 07.09.2015
Сообщений: 31

Вырезать символ из строки, регулярное выражение

13.09.2015, 11:50. Показов 2925. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как из строки

std::string s = "string\.txt";

вырезать сиивол "\"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.09.2015, 11:50
Ответы с готовыми решениями:

Регулярное выражение: вырезать текст из ссылки
Здравствуйте. Не могу разобраться с регулярными выражениями... Пример: $text = '<a href="tratata1.html">some...

Не работает регулярное выражение (вырезать div)
Встала такая задача. По AJAX получается html-страница, в ней есть подобный код: <div id="some_id"...

Регулярное выражение: вырезать все ссылки в тексте
Здравствуйте. Не могу разобраться с регулярными выражениями... Есть текст: Какой-то текст <a...

13
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.09.2015, 15:13
Была же уже тема с точкой. Только шаблон заменить.
C++
1
2
    std::string s = "test stri\\.ng";
    std::cout << std::regex_replace(s, std::regex("\\\\"), "");
0
0 / 0 / 0
Регистрация: 07.09.2015
Сообщений: 31
14.09.2015, 08:16  [ТС]
У меня не компилится данный код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <cstdlib>
#include <cstring>
#include <string>
#include <iostream>
#include <regex>
 
 
 
int main() {
  std::string s = "test stri.ng";
    std::cout << std::regex_replace(s, std::regex("t"), "");
    
}
ошыбка при компиляции

g++ c_/test_.cpp
In file included from /usr/include/c++/4.8/regex:35:0,
from c_/test_.cpp:6:
/usr/include/c++/4.8/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support for the \
^
c_/test_.cpp: In function ‘int main()’:
c_/test_.cpp:12:5: error: ‘cout’ is not a member of ‘std’
std::cout << std::regex_replace(s, std::regex("t"), "");
^
c_/test_.cpp:12:18: error: ‘regex_replace’ is not a member of ‘std’
std::cout << std::regex_replace(s, std::regex("t"), "");
^
c_/test_.cpp:12:40: error: ‘regex’ is not a member of ‘std’
std::cout << std::regex_replace(s, std::regex("t"), "");
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
14.09.2015, 11:59
Цитата Сообщение от c_kuzma Посмотреть сообщение
ошыбка при компиляции
Написано же - поддержку C++11 включить надо.
0
0 / 0 / 0
Регистрация: 07.09.2015
Сообщений: 31
14.09.2015, 15:20  [ТС]
Сделал по другому

std::string s = "string\\.txt";
s.replace(s.find("\\."),3,".");
std::cout<<s;

Работает, вырезает,
но теперь другая проблема, если в переменной s другое значение,
БЕЗ "\\." то вылазит ошибка во время выполнения скрипта.

./a.out
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::replace
Аварийный останов (сделан дамп памяти)

не могу придумать как обойти это.
Подскажите пожалуйста.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.09.2015, 16:09
C++
1
2
std::string s = "string\\.txt";
s.erase(s.find("\\"), 1);
0
0 / 0 / 0
Регистрация: 07.09.2015
Сообщений: 31
14.09.2015, 16:41  [ТС]
тоже самое
я думаю тут нужно чт ото типа такого

std::string s = "string\\.txt";
if(s.find("\\.")){
s.replace(s.find("\\."),3,".");
}
std::cout<<s;
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.09.2015, 16:45
Ты объясни, откуда у тебя 3, если там 2 символа.
0
0 / 0 / 0
Регистрация: 07.09.2015
Сообщений: 31
14.09.2015, 16:48  [ТС]
да согласен 2
но дело не в этом,
какое условие нужно написать, чтобы не срабатывало если нет искомых символов в строке.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.09.2015, 16:51
C++
1
2
3
std::string s = "string\\.txt";
size_t p;
if ((p = s.find("\\")) != std::string::npos) s.erase(p, 1);
0
0 / 0 / 0
Регистрация: 07.09.2015
Сообщений: 31
14.09.2015, 17:00  [ТС]
Спасибо ратает!!!
я правда переделал немного

std::string s = "string\\.txt";

size_t p;
if ((p = s.find("\\.")) != std::string::npos){
s.replace(p,2,".");
//s.erase(p, 1);
}
std::cout<<s;
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.09.2015, 17:18
Для чего? Это лишняя операция.
0
0 / 0 / 0
Регистрация: 07.09.2015
Сообщений: 31
14.09.2015, 17:25  [ТС]
Я использую эту функцию также для замены символа

Добавлено через 1 минуту
Есть еще одна проблема

если в
std::string s = "string\\.txt";

несколько точек, то вырезает или заменяут только первую точку.
А нужно, чтобы заменял все.

Добавлено через 1 минуту
тоесть
std::string s = "str\\.ing\\.txt";

должно вырезать в 2-х местах
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.09.2015, 18:13
regex_replace() используй, там все удалятся, а здесь только цикл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.09.2015, 18:13
Помогаю со студенческими работами здесь

Регулярное выражение вырезать из url иденификатор фесбука
подскажите регулярное выражение для функции str_replace () нужно вырезать из url идентификатор фейсбука возможные варианты: ...

Регулярное выражение: из текста вырезать все слова, содержащие только буквы
Нужно из текста вырезать все слова, содержащие только буквы. Не получается вырезать из текста английские слова с апострофом. Пробовал вот...

Регулярное выражение: исключить символ
Есть строка $28'405 С помощью регулярного выражения мне нужно достать число. Вот моя регулярка \D*(\d*'\d*) но она достает 28'405, а...

Регулярное выражение игнорирует спец символ \n
Имеется: Регулярное выражение- /G00 Z+.{6}\nG00 X+.{6} Y+.{6}\n+G01 Z+.{6} F+.??\(Penetrate\)/g Часть текста для обработки: ...

Скобка как символ, а не регулярное выражение
Всем доброго времени суток! Пытаюсь выполнить замену подстроки в строке, но не выходит String a = &quot;dsfgjhf 3204 (dkfgjkl...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru