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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.73
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
#1

Удаление пробелов в начале и конце - C++

16.07.2010, 13:33. Просмотров 4196. Ответов 5
Метки нет (Все метки)

Подскажите, пожалуйста, функцию удаление пробелов в начеле и конце строки?
Вот примерный код:
C++
1
2
3
4
// есть строка
std::string mystr;
mystr = "  string ";
// нужно чтобы удаляло >все< пробелы в начале и конца. т.е. как в примере - 2 пробела в строке в начале нужно убрать и один завершающий строку. на выходе должно быть "string"
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2010, 13:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление пробелов в начале и конце (C++):

Удаление лишних пробелов в начале и конце строки. - C++
Нужно написать функцию char*alltrim(char*string) для удаления пробелов в начале и конце строки с помощью указателей. Помогите завершить...

Отрезание пробелов в начале и в конце строки - C++
Разработайте функцию std::string Trims(std::string const&amp; str), выполняющую отрезание пробелов в начале и в конце строки str, и...

В начале и в конце слова поставить '*' - C++
ребят, как сделать так, чтоб * вставляло не только в начале, но и в конце слова? заранее спасибо) #include&lt;stdio.h&gt; ...

Удалить пробелы в начале и конце строки - C++
Удалить группу пробелов, с которых, возможно начинается и заканчивается строка строки читаются из файла и выводятся в файл Разрешено...

Функция удаляющая пробелы в начале и в конце строки - C++
Разработайте функцию std::string TrimBlanks(std::string const&amp; str), выполняющую отрезание пробелов в начале и в конце строки str, и...

Во введенной пользователем строке удалите все пробелы в начале и конце строки - C++
Во введенной пользователем строке удалите все пробелы в начале и конце строки. Я ищу первый индекс символа не равного пробелу и с конца...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nameless One
Эксперт С++
5774 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
16.07.2010, 13:39 #2
C++
1
2
3
size_t index=0;
while((index=mystr.find(' '))!=std::string::npos)
    mystr.erase(index, 1);
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
16.07.2010, 13:52 #3
Nameless One, так удалятся все пробелы.

Можно так:
C++
1
2
3
4
5
6
string str = " a b c ";
if (str.length() > 0 && str [0] == ' ')
    str.erase (0, 1);
if (str [str.length() - 1] == ' ')
    str.erase(str.length() - 1, 1);
cout << str << endl;
1
Nameless One
Эксперт С++
5774 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
16.07.2010, 14:22 #4
Точно, не подумал. Тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
 
void deleteSpaces(std::string& string)
{
    size_t index;
    size_t strBegin=string.find_first_not_of(' ');
    size_t strEnd=string.find_last_not_of(' ');
    while(((index=string.find(' '))!=std::string::npos)&&(index<strBegin))
        string.erase(index, 1);
    while((index=string.find(' ', strEnd))!=std::string::npos)
        string.erase(index, 1);
}
 
int main(void)
{
    std::string string(" A string with spaces   ");
    std::cout << "\"" << string << "\"" << std::endl;
    deleteSpaces(string);
    std::cout << "\"" << string << "\"" << std::endl;
    system("pause");
    exit(EXIT_SUCCESS);
}
Добавлено через 16 минут
Хм... функцию deleteSpaces лучше заменить на следующюю:
C++
1
2
3
4
5
6
7
void deleteSpaces(std::string& string)
{
    size_t strBegin=string.find_first_not_of(' ');
    size_t strEnd=string.find_last_not_of(' ');
    string.erase(strEnd+1, string.size() - strEnd);
    string.erase(0, strBegin);
}
1
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
16.07.2010, 14:38  [ТС] #5
всем спасибо, всё получилось
0
easybudda
Модератор
Эксперт CЭксперт С++
9633 / 5581 / 948
Регистрация: 25.07.2009
Сообщений: 10,715
16.07.2010, 15:10 #6
вот ещё до кучи
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
#include <iostream>
#include <string>
 
std::string trim(const std::string & s){
    size_t startPos = s.find_first_not_of(" \t");
    if ( startPos == std::string::npos )
        return "";
    size_t endPos = s.find_last_not_of(" \t");
    return s.substr(startPos, endPos - startPos + 1);
}
 
int main(){
    std::string buf;
    
    while ( true ){
        std::cout << "String: ";
        std::getline(std::cin, buf);
        if ( buf.empty() )
            break;
        std::cout << "Result: \"" << trim(buf) << "\"" << std::endl;
    }
    
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2010, 15:10
Привет! Вот еще темы с ответами:

Разместить в массиве все положительные элементы в начале, отрицательные - в конце, посередине - нули - C++
Всем доброго времени суток! Большая просьба помочь написать программу. Нужно сформировать 2 одинаковых динамических одномерных массива, где...

Отсортировать массив, чтобы все положительные числа находились в начале, отрицательные - в конце - C++
Помогите пожалуйста. Дан вещественный массив A( N ) . Отсортировать его таким образом , чтобы все положительные числа находились в...

Переставить элементы массива так, чтобы отрицательные оказались в начале, положительные - в конце - C++
дан массив целых чисел переставить его элементы так, чтобы отрицательные оказались в начале, положительные - в конце, а нули - между...

Расположить элементы массива так, чтобы нули было в начале, а единицы в конце - C++
Дан массив, состоящий из нулей и единиц, нужно расположить элементы массива так, чтобы нули было в начале, а единицы в конце.


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

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

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