Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2011, 13:11   #1
acronis2000
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 11
По умолчанию Какой коммандой или оператором отрезать часть слова

Добрый день.

Есть переменная wchar_t.

Каким образом отрезать часть с конца - например 8 последних символов.

пример wchar_t fio;
fio="Иванов Иван Иванович";

Как получить "вановичь" ?
acronis2000 вне форума Ответить с цитированием
Старый 04.06.2011, 13:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Описать новую переменку строки, в нее перекопировать нужную часть например в цикле.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2011, 13:26   #3
acronis2000
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 11
По умолчанию

а без цикла ?
Прямого оператора или комманды не существует ?
acronis2000 вне форума Ответить с цитированием
Старый 04.06.2011, 16:04   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
wchar_t fio;
 fio="Иванов Иван Иванович";
И компилятор не ругается на это?

Код:
а без цикла ?
Ну... если проблем с памятью не боитесь, то можно \0 в нужное место записать.
p51x вне форума Ответить с цитированием
Старый 04.06.2011, 16:39   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Прямого оператора или комманды не существует ?
Если не ошибаюсь есть WIN API функции, однако ИМХО циклом надежнее всего
Цитата:
p51x
Так ему нужно отрезать начало строки. Просто передвинуть указатель строки на новое начало, но ИМХО тут память замусорится. Лучше создать новый экземпляр строки, а старый освободить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2011, 16:40   #6
acronis2000
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 11
По умолчанию

если можно - приведите ,пожалуйста,пример в коде
acronis2000 вне форума Ответить с цитированием
Старый 04.06.2011, 17:31   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то в этом роде:
Код:
char* strt(char* s,int a,int b){
	char* ss=new char[b-a];
	int k=0,i;
	for(i=a;s[i]!=0 && i<b;i++) ss[k++]=s[i];
	ss[k]=0;
	return ss;
}

int _tmain(int argc, _TCHAR* argv[])
{
	char* s="Hello World";
	char* e=strt(s,4,8);
	printf("%s\n%s",s,e);
	getchar();
	return 0;
}
Только я не оч. си знаю, и как освобождать старую строку точно не помню.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2011, 19:00   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а почему нельзя просто сместить указатель?
только оригинальный не теряйте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.06.2011, 19:06   #9
acronis2000
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 11
По умолчанию

Каким образом сместить указатель ?
acronis2000 вне форума Ответить с цитированием
Старый 04.06.2011, 19:25   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
char* offsetstr(char* str,unsigned offset)//первое строка, второе количество символов с конца которые надо оставить(так сказать)
{
    int r=strlen(str);//определяем длину
    if(offset>=r)return str;//если хотим получить больше символов чем было, то не делаем ничего
    return (str+(r-offset));
}
применяем:
Код:
char* s="Hello World";
puts(offsetstr(s,5));
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отрезать часть строки Demonmov C++ Builder 3 04.05.2010 19:18
Помогите решить задачи (или хотя бы часть) Nefrit Паскаль, Turbo Pascal, PascalABC.NET 4 25.06.2008 20:45
Помогите с коммандой [RR]Reaction Общие вопросы Delphi 8 09.04.2008 16:15
вытащить часть слова до опред. символа WIC Microsoft Office Excel 5 27.12.2007 12:50