Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вырезать кусок строки

2.0K
11 ноября 2003 года
Son!K
29 / / 05.06.2003
Добрый день.

Мне необходимо вырезать кусок строки.
К примеру есть строка:

char str[100] = "кусок текста дла теста";

Как вырезать к примеру первые 2 слова и вернуть оставшуюся часть?

зарание длагодарен
319
11 ноября 2003 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by Son!K
Добрый день.

Мне необходимо вырезать кусок строки.
К примеру есть строка:

char str[100] = "кусок текста дла теста";

Как вырезать к примеру первые 2 слова и вернуть оставшуюся часть?

зарание длагодарен


Работай с CString там все необходимые функции есть. А так пиши цикл на длину строки и копируй ее в другую вспомогательную строку.

473
11 ноября 2003 года
Azazell
49 / / 20.12.1999
Цитата:
Originally posted by Son!K
Добрый день.

Мне необходимо вырезать кусок строки.
К примеру есть строка:

char str[100] = "кусок текста дла теста";

Как вырезать к примеру первые 2 слова и вернуть оставшуюся часть?

зарание длагодарен



Я бы например написал функцию (хотя наверное есть уже готовая)

char *str_cut(char *src, int cbegin,int cend)
{
char *ret = new char[strlen(src)- (cbegin - cend)];
int index = 0,
index1=0;
while(index < strlen(src))
{
if( !(index > cbegin && index < cend) )
{
ret[index1] = src[index];
index1++; index++;
}
else
index++;

}
return ret;
}
я её не дебужил, так что она глючная, нет множества проверок... так что сразу с размаху не пользоваться...
:)))

3
11 ноября 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Son!K
Добрый день.

Мне необходимо вырезать кусок строки.
К примеру есть строка:

char str[100] = "кусок текста дла теста";

Как вырезать к примеру первые 2 слова и вернуть оставшуюся часть?

зарание длагодарен



Конкретно для твоего примера будет выглядеть так:

 
Код:
char str[] = "кусок текста дла теста";
int word_num=2;

char* str2 = str;
for(int i=0; i<word_num && (str2=strchr(str2, ' ')); i++, str2++);
3
11 ноября 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Azazell

Я бы например написал функцию (хотя наверное есть уже готовая)

char *str_cut(char *src, int cbegin,int cend)
{
char *ret = new char[strlen(src)- (cbegin - cend)];
int index = 0,
index1=0;
while(index < strlen(src))
{
if( !(index > cbegin && index < cend) )
{
ret[index1] = src[index];
index1++; index++;
}
else
index++;

}
return ret;
}
я её не дебужил, так что она глючная, нет множества проверок... так что сразу с размаху не пользоваться...
:)))



М-да... глючная, это точно.
Твою функцию можно написать значительно проще и сделать ее более быстрой:

 
Код:
char *str_cut(char *src, int cbegin, int cend)
{
    int len = (strlen(src)>cend ? cend : strlen(src)) - cbegin;
    char *ret = new char[len+1];

    memcpy(ret, src+cbegin, len);
    ret[len] = '\0';

    return ret;
}
473
25 ноября 2003 года
Azazell
49 / / 20.12.1999
Зато Цикл нагляднее!!
:))
.....................
и почему я так редко пользовался подобным.... :(
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог