文本转换小程序

#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值