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;
}