{ tasks }

  • 3-7-7 无视大小写替换字符串

    3.7-7 无视大小写替换字符串

    #include <fstream>
    <!--more-->
    #include <iostream>
    #include <string>
    #include "ichar_traits.h"
    using namespace std;

    istring getData(string filename) throw(std::ifstream::failure)
    {
    std::ifstream streamReader(filename, std::ios::binary);
    if (!streamReader.is_open())
    throw std::ifstream::failure("file couldn't open");
    streamReader.seekg(0, std::ios::end); // 游标移到文件结尾
    unsigned filesize = streamReader.tellg(); // 获取游标当前位置 - 文件开始位置,此处为文件大小
    char *_data = new char[filesize]; // 分配内存
    streamReader.seekg(0, std::ios::beg); // 跳转回开始
    streamReader.read(_data, filesize); // 读取文件
    streamReader.close();
    istring data(_data);
    delete[] _data;
    return std::move(data);
    }

    istring &replaceAll(istring &context,
    const istring &from,
    const istring &to)
    {
    size_t lookHere = 0;
    size_t foundHere;
    while ((foundHere = context.find(from, lookHere)) != istring::npos) // find from lookHere
    { // to avoid the string
    context.replace(foundHere, from.size(), to); //"to" is the substr
    lookHere = foundHere + to.size(); // of "from"
    #ifdef SHOWREPLACE
    cout << "stringNumber:" << foundHere << endl;
    #endif
    }
    return context;
    }

    int main(int argc, char const *argv[])
    {
    istring fileTxt = getData("Rparse.h");
    cout<<fileTxt<<endl;
    replaceAll(fileTxt,"Size","Hello");
    cout<<fileTxt<<endl;
    return 0;
    }