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

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

Войти
Регистрация
Восстановить пароль
 
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
#1

Удалить все пробелы в строке - C++

02.08.2014, 08:41. Просмотров 738. Ответов 5
Метки нет (Все метки)

можно ли как то с помощью метода string.replace удалить все пробелы в строке? вот так не работает
C++
1
2
string str("this is test string");
str.replace(" ", "");
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2014, 08:41     Удалить все пробелы в строке
Посмотрите здесь:

В символьной строке удалить все лишние подряд идущие пробелы. C++
В символьной строке удалить все лишние подряд идущие пробелы. C++
C++ Удалить лишние пробелы в строке
В произвольной строке удалить двойные пробелы и определить длину новой строки C++
Удалить все символы в строке, не являющиеся буквами и заменить множественные пробелы одним C++
В данной строке удалить все пробелы. C++
C++ Строки: удалить все пробелы
C++ Строки. Удалить все пробелы
Удалить все лишние пробелы C++
Удалить лишние пробелы в строке C++
Удалить в строке лишние пробелы, оставив между словами ровно по одному C++
C++ Удалить лишние пробелы в строке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
02.08.2014, 08:50     Удалить все пробелы в строке #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
GetHelp, используй std::string::erase и std::remove:
C++
1
str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
Добавлено через 2 минуты
Цитата Сообщение от GetHelp Посмотреть сообщение
вот так не работает
И не должно, посмотри прототипы этого метода, здесь например.
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
02.08.2014, 08:53  [ТС]     Удалить все пробелы в строке #3
gray_fox,
error C2660: remove: функция не принимает 3 аргументов
отсутствуют экземпляры перегруженная функция "std::basic_string<_Elem, _Traits, _Alloc>::erase [с _Elem=char, _Traits=std::char_traits<char>, _Alloc=std::allocator<char>]", соответствующие списку аргументов типы аргументов: (int, std::_String_iterator<std::_String_val<std::_Simple_types<char>>>) тип объекта: std::string
не существует подходящей функции преобразования из "std::_String_iterator<std::_String_val<std::_Simple_types<char>>>" в "const char *"
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
02.08.2014, 08:59     Удалить все пробелы в строке #4
GetHelp, http://ideone.com/GyNXmN
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
02.08.2014, 09:01  [ТС]     Удалить все пробелы в строке #5
gray_fox, не знал что алгоритм надо инклудить спс
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
02.08.2014, 09:26     Удалить все пробелы в строке #6
GetHelp, вообще erase возможно использовать не обязательно. erase удаляет элементы из контейнера. Пусть r - результат remove. remove перераспределит элементы так, что в первой половине ( [begin; r) ) находится результат, во второй ( [r; end) ) - остальные элементы в неопределённом порядке. Если не предполагается дальше использовать объект std::string (например надо просто вывести в консоль результат), то можно просто использовать последовательность [begin; r) без вызова erase.

Добавлено через 4 минуты
Например http://ideone.com/mndGIR

Добавлено через 10 минут
Цитата Сообщение от gray_fox Посмотреть сообщение
во второй ( [r; end) ) - остальные элементы в неопределённом порядке.
Поправлюсь: они будут не в неопределённом порядке, а в неопределённом состоянии; суть в том, что remove не освобождает память, а только перераспределяет элементы последовательности; если надо так же освободить память, то надо так же использовать и erase.
Yandex
Объявления
02.08.2014, 09:26     Удалить все пробелы в строке
Ответ Создать тему
Опции темы

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