单词转换程序:
从文本中读取一段单词,其中会有u(you),thk(thanks)等简写,需要把他们都转成正式体。
建立映射Map,把需要特例输出的特别string存入map当中
map<string, string> buildMap(ifstream &map_file) //返回map
{
map<string, string> trans_map; //建立
string key; //需要改变的值
string value; //改变后的值
while (map_file >> key && getline(map_file, value)) //读入空格前的单词,getline读入剩下的单词(包括空格)
{
if (value.size() > 1) //如果没有读入key,那么就不符合,进入else
trans_map[key] = value.substr(1); //存入,后面的substr是跳过前面空格用的
else
throw runtime_error("no rule for" + key);
}
return trans_map;
转换规则:
const string &transform(const string &s, const map<string, string> &m) //返回一个不变的引用,传入单词和建立的map来检测是不是需要替换
{
auto map_it = m.find(s);