Boost字符串算法库提供了STL中缺少的与字符串相关的算法的通用实现。它是STL算法库的扩展,它包括修剪,大小写转换,谓词和查找/替换功能。它们都具有不同的变体,因此可以更轻松地选择最适合特定需求的产品。
该实现不限于与特定容器(如basic_string)一起使用,而是尽可能通用。这种概括并不影响性能,因为当算法意味着性能提高时,算法将使用特定于容器的功能。
- 将字符串转换为大写和小写。
STL具有转换字符大小写的好方法。不幸的是,它仅适用于单个字符,我们要转换一个字符串,
- to_upper()和to_lower()使用指定的语言环境转换字符串中字符的字符串。
- to_upper_copy()和to_lower_copy()返回转换后的字符串的副本。
例子:
#include
#include 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; } 输出:Actual string: Hello Actual string converted to uppercase: HELLO Actual string converted to lowercase: hello Converted Uppercase string: HELLO Converted Lowercase string: hello
- 从字符串删除字符
Boost.StringAlgorithms提供了几个函数,可用于从字符串删除单个字符。
- delete_first_copy()将删除源字符串中的第一个匹配项。
- delete_nth_copy()将删除源字符串中的第n个匹配项。
- delete_all_copy()将删除字符串中所有出现的特定字符。
- 要在任一端将字符串缩短特定数量的字符,请使用函数delete_head_copy()和delete_tail_copy() 。
例子
#include
#include #include #include 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; } 输出:eeksforgeeks eeksforgeeks geeksforeeks eeksforeeks forgeeks geeksforgeek
- 从字符串替换字符
Boost.StringAlgorithms提供了几个函数,可用于替换字符串的单个字符。
- replace_first_copy()将替换源字符串的第一个匹配项。
- replace_nth_copy()将替换源字符串的第n个匹配项。
- replace_all_copy()将替换字符串所有出现的特定字符。
例子
#include
#include #include #include 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; } 输出:geeks-for_geeks geeks_for-geeks geeks-for-geeks
参考: https : //www.boost.org/doc/libs/1_70_0/doc/html/string_algo/reference.html
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。