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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 50, средняя оценка - 4.78
hakerow
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 16
#1

Удалить часть строки - C++

28.11.2011, 10:47. Просмотров 7243. Ответов 7
Метки нет (Все метки)

Удалить часть строки, заключенный в скобки(вместе со скобками)
 Комментарий модератора 
Запрещено создавать темы с бессмысленными названиями. Тема переименована.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2011, 10:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить часть строки (C++):

Скопировать часть строки и часть удалить - C++
1. Удалить из строки ее часть с заданной позиции и заданной длины. 2. Скопировать часть строки с определенной позиции и определенной...

Удалить часть строки - C++
В заданной строке нужно заменить все пары "АВ" на "С". Я вот не знаю что написать после if. #include "stdafx.h" #include <conio.h> ...

Удалить часть символьной строки, заключенной в скобки - C++
Помогите пожалуйста решить задачу Вот условие:Удалить часть символьной строки, заключенной в скобки (вместе со скобками).

Удалить часть символьной строки, заключенной в скобки - C++
Удалить часть символьной строки, заключенной в скобки (вместе со скоб¬ками). (использовать iostream.h)

Удалить часть символьной строки, заключонной в скобки - C++
2) Удалить часть символьной строки, заключонной в скобки (вместе со скобками).

Удалить часть символьной строки, заключенной в скобки (вместе со скобками). - C++
Удалить часть символьной строки, заключенной в скобки (вместе со скобками).

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Петррр
5949 / 3386 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
28.11.2011, 11:28 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    char str[] = "hello, (sometext) world";
    char *first_bracket;
    char *second_bracket;
    first_bracket = strchr(str, '(');
    second_bracket = strchr(str, ')') ;
    if (first_bracket && second_bracket)
    {
        memmove(first_bracket, second_bracket + 1, strlen(str) - (second_bracket - str) + 1);
        printf("Result string: %s\n", str);
    }
    else
        printf("First or second bracket not found\n");
    system("pause");
    return 0;
}
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
28.11.2011, 11:37 #3
язык какой?
c или c++?
например так можно
навскидку
C++
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
#include<iostream>
#include<cstring>
using namespace std;
 
int main()
{
char str1[100] = {0};
char str[100];
cin.getline(str,100);
int k = 0,strt,fnsh;
for(int i = 0;i < strlen(str);i++)
{
if(str[i] == '(')
strt = i;
if(str[i] == ')')
fnsh = i;
}
for(int i = 0;i < strt;i++)
{
    str1[k] = str[i];
    k++;
}
for(int i = fnsh+1;i < strlen(str);i++)
{
    str1[k] = str[i];
    k++;
}
cout << endl << str1;
return 0;
}
hakerow
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 16
30.11.2011, 21:14  [ТС] #4
спс конечно за старания, но я эту задачу решил в более компактном виде

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vcl.h>
#include <iostream>
#include <string>
 
int main()
{
 std::string s;
 std::cout<<"BBeguTe cTpoKy co cKo6KaMu \n";
 std::cin>>s;
      s.erase(s.find_first_of('(', 0), s.find_first_of(')', 0)-s.find_first_of('(', 0)+1);
 std::cout<<"CTpoKa 6e3 cKo6oK \n"<<s<<"\n";
      system("pause");
      return 0;
}
Сыроежка
Заблокирован
30.11.2011, 21:58 #5
hakerow,

Проблема в том, что ваша программа некорректная, так как никто не запрещает, что в строке может оказаться, что первым встречается символ ')', а не '('.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
30.11.2011, 23:19 #6
C++
1
2
3
4
5
6
7
8
9
#include <string>
#include <iostream>
#include <boost/regex.hpp>
       
int main(){    
    std::string s = "(123 + 456) - (34 - 56) + 100 )(";
    boost::regex reg("(\\(.*?\\))");
    std::cout << boost::regex_replace(s, reg, "") << std::endl;
}
hakerow
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 16
05.12.2011, 16:42  [ТС] #7
Цитата Сообщение от Сыроежка Посмотреть сообщение
hakerow,

Проблема в том, что ваша программа некорректная, так как никто не запрещает, что в строке может оказаться, что первым встречается символ ')', а не '('.
Где вы видели что в скобки заключают так
)сторока заключёная в скобки(
Chardash
1 / 1 / 2
Регистрация: 20.12.2013
Сообщений: 27
28.03.2017, 23:09 #8
Здравствуйте, похожий вопрос. Не пойму, что не так в регулярке?
C++
1
2
3
string v_name = "раз, два, три";
const boost::regex reg_name("([., ? +~#<>$ % !`&*{} = :@\\ / \r\n])");
v_name.erase(boost::remove_if(v_name, boost::is_any_of(reg_name)), v_name.end());
удаляет все вместе с пробелами. Заменив регулярку на пробел, оставляет, но добавляет лишний пробел вместо запятой.
Можно как то удалить лишние символы, не склеивая все слова в одно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2017, 23:09
Привет! Вот еще темы с ответами:

Строки (Из строки удалить ту часть, которая в "" (кавычках)) - C++
Из строки удалить ту часть, которая в &quot;&quot;. Например dsfsdfsdfsdf&quot;sdfsdfs&quot;sdfsd - вывод dsfsdfsdfsdfsdfsd

Удалить часть символьный строки заключенной в скобки(вместе со скобками) . Нужно через вхождение в строку - C++
это не катит #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;string.h&gt; using namespace std; int main() { cout&lt;&lt;&quot;vvedite...

Удалить часть символьной строки, заключенной в скобки (вместе со скобками). Нужно через вхождение в строку - C++
с++ это не катит #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;string.h&gt; using namespace std; int main() { ...

Из текста удалить заданный символ, каждый раз сдвигая оставшуюся часть каждой строки “влево” - C++
Из текста удалить заданный символ, каждый раз сдвигая оставшуюся часть каждой строки “влево”.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.03.2017, 23:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru