В 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++.