文本转换小程序

#include &lt    iostream>  
#include &lt    fstream>  
#include &lt    sstream>  
#include &lt    algorithm>  
#include &lt    map>  
#include &lt    string>  

using namespace std;

map&lt    string, string&gt    BuildMap (ifstream &mapFile)
{
      map&lt    string, string&gt  transMap;                                                                              //save the rule of transform
      string key;                                                                                                                        //the word will be transformed
      string value;                                                                                                                  //after-be-replaced word
      while (mapFile &gt  &gt    key && getline (mapFile, value)) {
            if (value.size () &gt    1)                                                                                          //if trans form role is exist
                  transMap[key] = value.substr (1);                                                                        //skip the first space
            else
                  throw runtime_error ("no rule for" + key);
      }
      return transMap;
}

const string&
transform (const string &s, map&lt    string, string&gt    &tempMap)
{
      return  (tempMap.find (s) != tempMap.cend ()) ? tempMap[s] : s;
}

void WordTransform (ifstream &mapFile, ifstream &input)
{
      auto transMap = BuildMap (mapFile);                                                                                    //save the rule of transform
      string text;                                                                                                                  //save everyline of the input file
      while (getline (input, text)) {                                                                                          //read every line
            istringstream stream (text);                                                                                    //read every word
            string word;
            bool firstWord = true;
            while (stream &gt  &gt    word) {                                                                              //read text word by word
                  if (firstWord)
                        firstWord = false;
                  else
                        cout &lt    &lt      " ";                                                                                    //space between every word
                  //function transform return the first argument or the format have be transformed
                  cout &lt    &lt      transform (word, transMap);
            }
            cout &lt    &lt      endl;                                                                                                //finish the transform of a line
      }
}
int main (int argc, char* argv[])
{
      std::ios::sync_with_stdio (false);
      ifstream mapFile (argv[1]), input(argv[2]);
      WordTransform (mapFile, input);
      return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值