C++小技巧

  1. int获得最后一个设置位
    设置位,即为整数最低位的1

    1
    2
    int a;
    a &=-a
  2. 读取文件写入文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include<fstream>
    //读文件
    ifstream ifile("文件路径");
    ifile>>data;
    ifile.close();
    //写文件
    ofstream ofile("文件路径");
    ofile<<data;
    ofile.close();
  3. 使用正则表达式搜索文件中所有匹配字符串,并输出到指定文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    #include<fstream>
    #include<iostream>
    #include<regex>
    #include<string>
    using namespace std;
    /*
    查找数据文件中满足指定正则表达式的字符串,并提取其中的数据。
    参考:
    1. https://blog.csdn.net/mycwq/article/details/18838151 c++正则表达式使用
    2. https://blog.csdn.net/yingxunren/article/details/3968800 const char 区别
    */
    int main(int argc,char *argv[]) {
    string str;
    int n = 0;
    try {
    string ifile1, ifile2;
    char data[500];
    smatch sm;
    //将路径名/变为//
    regex e("\\\\");/*正则表达式为\\但编译时也需要\,所以为\\\\*/
    string fmt("\\\\");
    regex e1("(aggrb=)(\\d+)(KB/s)");/*正则表达式为\d,但编译时需要,所以为\\d*/
    cout << "请输入数据文件和输出文件" << endl;
    cin >> ifile1 >> ifile2;
    regex_replace(ifile1, e, fmt);
    ifstream ifile(ifile1);
    regex_replace(ifile2, e, fmt);
    ofstream ofile(ifile2);

    while (ifile.getline(data,400)) {
    string str(data);
    if (regex_search(str, sm, e1)) {
    n++;
    ofile << sm[2] << '\t';//制表符输出,可直接粘贴在excel中
    cout << sm[2]<<'\t';
    if (n % 10== 0) {
    ofile << endl;
    cout << endl;
    }
    }
    }
    ifile.close();
    ofile.close();
    }catch (const std::regex_error& e) {
    cout << "regex_error caught: " << e.what() << '\n';
    if (e.code() == std::regex_constants::error_brack) {
    std::cout << "The code was error_brack\n";
    }
    }
    }
-------------本文结束感谢您的阅读-------------
鼓励鼓励!