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

Удаление лишних пробелов в начале и конце строки. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ программа четырехзначное число http://www.cyberforum.ru/cpp-beginners/thread24937.html
Программу в C++ Дано четырехзначное число х. Нужно вывести на экран сообщение о том, сколько в этом числе одинаковых цифр и каково их значение
C++ Как возвратить одномерный массив Есть вопрос. Можно ли возвратить из одной функции в другую, ее вызвавшую, не просто одно значение, а массив значений через return? void main() { ... func(A); } int func(int *S) { .... return A; /*Или что-то в этом роде*/ http://www.cyberforum.ru/cpp-beginners/thread24930.html
C++ API функции для работы с окном
Подскажите, пожалуйста, есть ли API функции в с++, с помощью которых можно закрывать, разворачивать, сворачивать, перемещать и т.п. окно ? Если есть, напишите их или дайте ссылку на источник.
C++ Принадлежность точки к отрезку.
УВАЖАЕМЫЕ ЭКСПЕРТЫ ПОМОГИТЕ УЛУЧшИТЬ АЛГОРИТМ ДЛЯ ДАННОЙ ЗАДАЧИ.... Точки и отрезки (Время: 2 сек) Дано N отрезков на числовой прямой и M точек на этой же прямой. Для каждой из данных точек определите, скольким отрезкам она принадлежит. Точка x считается принадлежащей отрезку с концами a и b, если выполняется двойное неравенство min(a, b) <= x <= max(a, b). Входные данные Первая строка...
C++ Обьём целиндра + 10 r,h, значений и 10 выводов. http://www.cyberforum.ru/cpp-beginners/thread24849.html
Здравствуйте все, прошу прощения если такая тему уже было но найти не могу. Суть в чём, Написать программу которая посчитала бы обьём целиндра И вы водила, его с помощью ФУНКЦИИ (я так понимаю передача данных методом копирования или по ссылке) Я то написал программу, но я меня не было тогда когда была лекция про эти методы, в книгах понять не могу как это делается, собвственно как вывести...
C++ Создание матрицы 5*3 в С++ Добрый день а может вечер, здрасте всем... Прошу помощь мне с задачей если не составит труда вот условие задачи 8.9 Результаты соревнований по прыжкам в длину представлены в виде матрицы 5х3 (5 спортсменов по 3 попытки у каждого). Указать, какой спортсмен и в какой попытке показал наилучший результат. Спасибо всем... подробнее

Показать сообщение отдельно
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
14.08.2009, 01:40     Удаление лишних пробелов в начале и конце строки.
Кстати, можно и короче

char *trunc_str(char *str){
char *stop;
for ( ; isspace(*str); str++ )
;
for ( stop = str + strlen(str) - 1; isspace(*stop) && stop > str; stop-- )
;
*++stop = 0;

return str;
}
Кстати, отличный индусский код. Его использование может быть таким:

char* p = new char[100];
strcpy(p, " 123 ");
p = trunc_str(p);
delete [] p;

...
Если еще актуально, я просто для себя разбирался, прокомментировал заодно:
char* alltrim( char*string)
{ ...
...
char* trimall2(char* str){ ...
Эти два кода примерно аналогичны. вряд ли юзер будет ожидать дополнительных аллокаций.

char*x=" q w e r t y ";
std::cout<<alltrim(x); //На выходе должно получится "q w e r t y"
а вот за такое надо отрывать руки и отправлять обратно на родину, в Олбанию :LOL:

а теперь - правильный вариант (:

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
31
32
33
34
35
36
37
38
39
40
41
#include <tchar.h>
#include <string.h>
 
TCHAR* trim_left(TCHAR* const str)
{
    if (str == NULL)
        return (NULL);
    const size_t len = _tcslen(str);
    const size_t pos = _tcsspn(str, _T(" \t\r\n"));
    if (pos > len || pos == 0)
        return (str);
    memmove(str, str + pos, (len - pos) * sizeof(TCHAR));
    str[len-pos] = _T('\0');
    return (str);
}
 
TCHAR* trim_right(TCHAR* const str)
{
    if (str == NULL)
        return (NULL);
    TCHAR* p = str + _tcslen(str) - 1;
    while ((p >= str) && _istspace(*p))
        *p-- = _T('\0');
 
    return (str);
}
 
TCHAR* trim(TCHAR* const str)
{
    return trim_left(trim_right(str));
}
 
int main()
{
    TCHAR* p = new TCHAR[100]();
    _tcscpy(p, _T(" \t\r\n\n\r  1 2 3   \r\r\n\n\t"));
    trim(p);
    delete [] p;
 
    return (0);
}
 
Текущее время: 09:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru