2018-05-18

函数绑定器

#include

using namespace std::placeholders;

struct mysruct
{
    void add(int a)
    {
        cout << a << endl;
    }

    void add1(int a, int b)
    {
        cout << a << endl;
    }

    void add2(int a, int b, int c)
    {
        cout << a << endl;
    }
};

void mainr11()
{
    mysruct my1;
    //my1.add(10);

    cout << typeid(my1.add).name() << endl;
    cout << typeid(&mysruct::add).name() << endl;
    void (mysruct::*p)(int a) = &mysruct::add;  //void (mysruct::*p)(int a)  add的数据类型
    //mysruct::*p  p函数指针很难调用


    //绑定包装器  包装类成员函数 用于使用

                      //函数名      对象指针(谁调用)  参数
    auto fun1 = bind(&mysruct::add, &my1,_1); //有一个参数
    auto fun2 = bind(&mysruct::add1, &my1, _2); //有二个参数
    auto fun3 = bind(&mysruct::add2, &my1, _3); //有三个参数

    fun1(1000);
    fun2(1000,11);
    fun3(1000,10,55);



    cin.get();
}



struct MyStruct
{
    int operator()(int a, int b=1)
    {
        return a + b;
    }
};

int add(int a, int b=10)
{
    cout << "a="<

CPP转义字符


#include

 
void main()
{

    string str(R"(D:\CloudMusic\cloudmusic.exe)");
    //R"()"
    system(str.c_str());

    cout << str.c_str() << endl; //按照c风格 打印字符串   //\n不会换行
    cin.get();
}

正则表达式

//regex_match //判断匹配
//regex_search //检索
//regex_replace //替换

#include

void mainr13()
{
    regex reg("select ([a-zA-z]*) from ([a-zA-z]*)$");
    cmatch what;  //匹配的词语检索出来   (字符串数组)
    bool isit = regex_match("select id from admin",what,reg);  //判断匹配
    for (size_t i = 0; i < what.size(); i++)  //输出匹配的信息
    {
        cout << what[i + 1].first << "\t";
    }
    if (isit)
    {
        cout << "匹配" << endl;
    }
    else
    {
        cout << "不匹配" << endl;
    }


    //手机号  13  15  18 17
    //~   开头
    //()  组
    //[]  或
    //{}  恰好几次
    //$   结尾

    regex reg1("~(1[3|4|5|8|7][0-9]{9})");
    string str1;
    cin >> str1;
    bool isit1 = regex_match(str1,reg1); //不需要返回结果
    if (isit1)
    {
        cout << "匹配" << endl;
    }
    else
    {
        cout << "不匹配" << endl;
    }

    cmatch match1;
    regex reg2("\\d+"); //数字
    char  str[50]("hello 8848, hello guo 180");
    bool isok = regex_search(str, match1, reg2);
    if (isok)
    {
        for (size_t i = 0; i !=match1.size(); i++)
        {
            cout << match1[i].first << endl;
        }
    }
    else
    {
        cout << "不匹配" << endl;
    }

    cout<< regex_replace(str,reg2,"ABCD");  //将数字 替换成ABCD


    cin.get();
}


日期匹配

{
    //1999/12/25
    regex reg("~\\d{4}/(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])$");
    string str1;
    getline(cin, str1); //获取一行 遇到\n结束
    smatch m; //帮着转换

    if (regex_match(str1,m, reg))
    {
        //m[0] 忽略
        int year = atoi(m[1].str().c_str());  //获取整数
        int month = atoi(m[2].str().c_str());
        int data = atoi(m[3].str().c_str());

        cout << year << " " << month << " " << data << endl;

        cout << "匹配" << endl;
    }
    else
    {
        cout << "不匹配" << endl;
    }

    regex regx("\\s*[,#,;]+\\s*");
    string strx;
    getline(cin, strx);
    //迭代器
    sregex_token_iterator end; //拆分字符串

    for (sregex_token_iterator  it(strx.begin(),strx.end(),reg,-1);it!=end;it++)
    {
        cout << *it << endl;
    }

    cin.get();
}

你可能感兴趣的:(2018-05-18)