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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 50, средняя оценка - 4.78
hakerow
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 16
28.11.2011, 10:47     Удалить часть строки #1
Удалить часть строки, заключенный в скобки(вместе со скобками)
 Комментарий модератора 
Запрещено создавать темы с бессмысленными названиями. Тема переименована.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 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
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
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
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2011, 16:42     Удалить часть строки
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
hakerow
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 16
05.12.2011, 16:42  [ТС]     Удалить часть строки #7
Цитата Сообщение от Сыроежка Посмотреть сообщение
hakerow,

Проблема в том, что ваша программа некорректная, так как никто не запрещает, что в строке может оказаться, что первым встречается символ ')', а не '('.
Где вы видели что в скобки заключают так
)сторока заключёная в скобки(
Yandex
Объявления
05.12.2011, 16:42     Удалить часть строки
Ответ Создать тему
Опции темы

Текущее время: 22:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru