Эффективные способы удаления пробелов в C++ с помощью указателей

В C++ пробелы (например, пробелы, символы табуляции и символы новой строки) могут быть нежелательны при обработке входных строк. В этой статье мы рассмотрим несколько методов удаления пробелов из строки с помощью указателей. Эти методы предлагают эффективные решения для решения задач манипулирования строками в C++. Давайте углубимся в примеры кода и подробно рассмотрим каждый метод.

Метод 1: использование указателей и циклов

#include <iostream>
using namespace std;
void removeWhiteSpaces(char* str) {
    char* i = str;
    char* j = str;

    while (*j != '\0') {
        *i = *j++;
        if (*i != ' ' && *i != '\t' && *i != '\n') {
            i++;
        }
    }
    *i = '\0';
}
int main() {
    char str[] = "Hello,   World!  ";
    cout << "Before removing white spaces: " << str << endl;
    removeWhiteSpaces(str);
    cout << "After removing white spaces: " << str << endl;

    return 0;
}

Метод 2: использование стандартных библиотечных функций

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
void removeWhiteSpaces(string& str) {
    str.erase(remove_if(str.begin(), str.end(), ::isspace), str.end());
}
int main() {
    string str = "Hello,   World!  ";
    cout << "Before removing white spaces: " << str << endl;
    removeWhiteSpaces(str);
    cout << "After removing white spaces: " << str << endl;

    return 0;
}

Метод 3. Использование указателей и пользовательских функций

#include <iostream>
using namespace std;
void removeWhiteSpaces(char* str) {
    char* i = str;
    char* j = str;

    while (*j != '\0') {
        if (*j != ' ' && *j != '\t' && *j != '\n') {
            *i = *j;
            i++;
        }
        j++;
    }
    *i = '\0';
}
int main() {
    char str[] = "Hello,   World!  ";
    cout << "Before removing white spaces: " << str << endl;
    removeWhiteSpaces(str);
    cout << "After removing white spaces: " << str << endl;

    return 0;
}

В этой статье мы рассмотрели три эффективных метода удаления пробелов из строки в C++ с помощью указателей. В первом методе используются указатели и циклы, во втором — функции стандартной библиотеки, а в третьем — указатели и пользовательская функция. Эти методы предоставляют разные подходы для достижения одного и того же результата, что дает вам гибкость в зависимости от ваших конкретных требований. Поняв и внедрив эти методы, вы сможете эффективно решать задачи удаления пробелов в своих программах на C++.