• 《BOOST程序库完全开发指南》 第05章 字符串与文本处理


    lexical_cast 字面量转换:

    #include <iostream>
    #include <boost/lexical_cast.hpp>
    #include <string>
    
    int main()
    {
        int i = 0;
        try{
            i = boost::lexical_cast<int>("100L"); //可能会抛出 bad_lexical_cast 异常    }catch(boost::bad_lexical_cast& e)
        {
            std::cout<<e.what()<<std::endl;
        }
        std::string s = boost::lexical_cast<std::string>(32.2);
        std::cout<<i<<"\n"<<s<<std::endl; //100    32.200000000000003
    }

    boost::format  字符串格式化:

    #include <iostream>
    #include <string>
    #include <boost/format.hpp>
    
    int main()
    {
        std::cout<<boost::format("%s->%s = %d")%"user_ptr"%"userid"%20<<std::endl; //user_ptr->userid = 20
        boost::format fmt("%1%,%2%,%2%,%3%");
        fmt %1%2;
        fmt %3;
        std::cout<<fmt.str()<<std::endl; //1,2,2,3
    }

    #include <boost/algorithm/string.hpp>

    int main()
    {
        std::string str = "Hello World!";
        std::string str2 = "hello world!";
        if(boost::ends_with(str,"!") && boost::istarts_with(str,"h"))
        {
            std::cout<<boost::to_upper_copy(str)<<"\n"
                <<boost::to_lower_copy(str)<<"\n"
                <<boost::replace_first_copy(str," ","--")<<"\n"
                <<boost::erase_first_copy(str," ")<<"\n"
                <<boost::iequals(str,str2)<<"\n" //带前缀i不区分大小写
                <<boost::is_less()(str,str2)<<"\n"
                <<boost::icontains(str,"WO")<<"\n"
                <<boost::all(str2.substr(0,5),boost::is_lower())<<"\n"
                <<std::endl;
        }
        std::string str3 = "  wo0000";
        std::cout<<boost::trim_left_copy(str3)<<std::endl;
        std::cout<<boost::trim_copy_if(str3,boost::is_digit() || boost::is_space())<<std::endl;
        std::cout<<boost::find_first(str,"e")<<std::endl;
        //以上方法中有后缀 _copy的,表示返回字符串副本,原字符串未改变。
        //可以不带后缀 _copy ,表示改变原字符串,但不返回该字符串。
        //类似的还有加前缀 i 的方法,表示不区分大小写。
        //后缀 _if 的方法表示需要一个作用判断式的谓语函数对象,否则使用默认判断准则
        //all 检测一个字符串里所有的元素,是否满足指定的判断式。可惜没有加后缀_if
        //为配合all方法,提供了一组分类函数:
        //is_space, is_alnum, is_alpha, is_cntrl, is_digit, is_graph, is_lower, is_print, is_punct, is_upper, is_xdigit, is_any_of, if_from_range
        std::vector<std::string> vect;
        std::string str4 = "Hello World!Haha.";
        boost::split(vect,str4,boost::is_any_of(" !"));
        for(int i = 0; i < vect.size(); i++)
        {
            std::cout<<vect[i]<<std::endl;
        }
        std::vector<std::string> v = boost::assign::list_of("aa")("bb")("cc");
        std::cout<<boost::join(v,"+")<<std::endl;
    }


     

  • 相关阅读:
    在C#中子线程如何操作主窗口线程上的控件
    创建数据透视表数据包含合并单元格
    sql,nosql
    Enthought科学计算,数据分析
    程序员常去的14个顶级开发社区
    Windows查看进程taskList,终止进程tskill
    Pandas库之DataFrame
    centos下chm阅读器
    c++回调函数
    __NSAutoreleaseNoPool(): ... utoreleased with no pool in place
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/2730539.html
Copyright © 2020-2023  润新知