📜  C ++ Boost字符串算法库

📅  最后修改于: 2021-05-31 20:06:42             🧑  作者: Mango

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等的更多准备工作,请参阅“完整面试准备课程”