La biblioteca de algoritmos Boost String proporciona una implementación genérica de algoritmos relacionados con strings que faltan en STL . Es una extensión de la biblioteca de algoritmos de STL e incluye recorte , conversión de casos , predicados y funciones de buscar/reemplazar . Todos ellos vienen en diferentes variantes, por lo que es más fácil elegir el que mejor se adapte a una necesidad particular.
La implementación no está restringida para trabajar con un contenedor en particular (como basic_string), sino que es lo más genérica posible. Esta generalización no compromete el rendimiento, ya que los algoritmos utilizan características específicas del contenedor cuando significa una mejora del rendimiento.
- Conversión de una string a mayúsculas y minúsculas.
STL tiene una buena manera de convertir el caso del personaje. Desafortunadamente, solo funciona para un solo carácter y queremos convertir una string,
- to_upper() y to_lower() convierten el caso de los caracteres en una string utilizando una configuración regional específica.
- to_upper_copy() y to_lower_copy() devuelven la copia de la string convertida.
Ejemplos:
#include <boost/algorithm/string.hpp>
#include <iostream>
using
namespace
std;
using
namespace
boost::algorithm;
int
main()
{
string str(
"Hello"
);
string upper_s;
string lower_s;
cout <<
"Actual string: "
<< str << endl;
to_upper(str);
cout <<
"Actual string converted to uppercase: "
<< str << endl;
to_lower(str);
cout <<
"Actual string converted to lowercase: "
<< str << endl;
str =
"Hello"
;
upper_s = to_upper_copy(str);
lower_s = to_lower_copy(str);
cout <<
"Converted Uppercase string: "
<< upper_s << endl;
cout <<
"Converted Lowercase string: "
<< lower_s << endl;
return
0;
}
Producción:Actual string: Hello Actual string converted to uppercase: HELLO Actual string converted to lowercase: hello Converted Uppercase string: HELLO Converted Lowercase string: hello
- Para eliminar caracteres de una string
Boost.StringAlgorithms proporciona varias funciones que puede usar para eliminar caracteres individuales de una string.
- erase_first_copy() eliminará la primera aparición en la string de origen.
- erase_nth_copy() eliminará la enésima aparición en la string de origen.
- erase_all_copy() eliminará todas las apariciones de un carácter en particular de una string.
- Para acortar una string en un número específico de caracteres en cualquiera de los extremos, use las funciones erase_head_copy() y erase_tail_copy() .
Ejemplo
#include <boost/algorithm/string.hpp>
#include <cstdlib>
#include <iostream>
#include <string>
using
namespace
std;
using
namespace
boost::algorithm;
int
main()
{
string s =
"geeksforgeeks"
;
cout << erase_first_copy(s,
"g"
) <<
'\n'
;
cout << erase_nth_copy(s,
"g"
, 0) <<
'\n'
;
cout << erase_last_copy(s,
"g"
) <<
'\n'
;
cout << erase_all_copy(s,
"g"
) <<
'\n'
;
cout << erase_head_copy(s, 5) <<
'\n'
;
cout << erase_tail_copy(s, 1) <<
'\n'
;
return
0;
}
Producción:eeksforgeeks eeksforgeeks geeksforeeks eeksforeeks forgeeks geeksforgeek
- Para reemplazar caracteres de una string
Boost.StringAlgorithms proporciona varias funciones que puede usar para reemplazar caracteres individuales de una string.
- replace_first_copy() reemplazará la primera aparición en la string de origen.
- replace_nth_copy() reemplazará la enésima aparición en la string de origen.
- replace_all_copy() reemplazará todas las apariciones de un carácter particular de una string.
Ejemplo
#include <boost/algorithm/string.hpp>
#include <cstdlib>
#include <iostream>
#include <string>
using
namespace
std;
using
namespace
boost::algorithm;
int
main()
{
string s =
"geeks_for_geeks"
;
cout
<< replace_first_copy(s,
"_"
,
"-"
)
<<
'\n'
;
cout
<< replace_last_copy(s,
"_"
,
"-"
)
<<
'\n'
;
cout
<< replace_all_copy(s,
"_"
,
"-"
)
<<
'\n'
;
return
0;
}
Producción:geeks-for_geeks geeks_for-geeks geeks-for-geeks
Referencia: https://www.boost.org/doc/libs/1_70_0/doc/html/string_algo/reference.html