Как удалить лишние пробелы из строки в C++?

Пользователь

от nicola , в категории: C/C++ , 3 года назад

Как удалить лишние пробелы из строки в C++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 3 года назад

@nicola  Чтобы удалить лишние пробелы, Вы можете создать аналог strip-фукнции в Python.

Для этого можно использоваться цикл и массив символов (Строку)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>

int main()
{
    char str[60]; // Создаем строку (Массив символов), который будет вводится с клавиатуры
    char new_str[60] = ""; // Создаем пока-что пустую переменную, в которой будет измененная строка ( Без пробелов )
    
    std::cin >> str; // Позволяем пользователю ввести строку

    for (int i = 0; i < strlen(str); i++)
    {
        if (str[i] != ' ')
            strncat(new_str, str + i, 1); // Изменяем строку посредством изменения и копирования в новую переменную
    }

    std::cout << str << std::endl; // Выводим результат
    return 0;

    // Пример :
    // Ввод = "   dropcode.ru    "
    // Вывод = "dropcode.ru"
} 

Пользователь

от gussie.jones , 3 года назад

@nicola Используйте метод find() для поиска лишних (двойных например) пробелов в строке на C++ и затем метод .replace() чтобы заменить с одинарным пробелом, ниже код:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>

int main(int argc, char *argv[]) {
    std::string str = "Тест -    с  т  ро   ка  ";

    // Искать двойные пробелы
    std::string::size_type pos = str.find("  ");

    while (pos != std::string::npos) {
        // Заменить с одним пробелом
        str.replace(pos, 2, " ");
        // Ищем если осталось еще
        pos = str.find("  ", pos);
    }

    // Вывод: Тест - с т ро ка
    std::cout << str << std::endl;

    return 0;
}