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

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

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

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

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

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

Удаление лишних пробелов в начале и конце строки. C++
C++ Создание программы со своей библиотекой ( удаление элементов с N по M в строке и удаление лишних пробелов(если 2 и более оставить один))
C++ Переставить элементы массива так, чтобы отрицательные оказались в начале, положительные - в конце
C++ Отсортировать массив таким образом, чтобы все нули находились в начале, а единицы — в конце массива
Во введенной пользователем строке удалите все пробелы в начале и конце строки C++
C++ В начале и в конце слова поставить '*'
C++ Отсортировать массив из 0 и 1 так, чтобы все нули находились в начале, а все единицы - в конце массива
Расположить элементы массива так, чтобы нули было в начале, а единицы в конце C++
Функция удаляющая пробелы в начале и в конце строки C++
C++ Отсортировать массив, чтобы все положительные числа находились в начале, отрицательные - в конце
C++ Разместить в массиве все положительные элементы в начале, отрицательные - в конце, посередине - нули
C++ Отрезание пробелов в начале и в конце строки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
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);
.::.DIMA.::.
142 / 142 / 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;
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
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);
}
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
16.07.2010, 14:38  [ТС]     Удаление пробелов в начале и конце #5
всем спасибо, всё получилось
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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;
}
Yandex
Объявления
16.07.2010, 15:10     Удаление пробелов в начале и конце
Ответ Создать тему
Опции темы

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