給定一個string。将它轉換為還有一個string。程式的輸入是兩個檔案。
第一個檔案儲存的是一些規則,用來轉換第二個檔案的文本。
每條規則由兩部分組成:一個可能出如今輸入檔案裡的單詞和一個用來替換它的短語。表達的含義是,每當第一個單詞出如今輸入中時,我們就将它替換為相應的短語。第二個輸入檔案包括要轉換的文本。

簡單來說,就是把rule檔案裡的相應單詞替換,在target檔案裡進行實作。
思路:rule檔案裡有一個單詞的簡寫後面是單詞的全寫,也就是說在target中找到簡寫的單詞。依據rule中的單詞進行替換。明顯rule中的單詞沒有反複的,一個相應一個。這就想到了使用map這個關聯矩陣來實作。
代碼:
第一個檔案儲存的是一些
//規則,用來轉換第二個檔案的文本。每條規則由兩部分組成:一個可能出如今輸入檔案裡的單詞和
//一個用來替換它的短語。表達的含義是。每當第一個單詞出如今輸入中時,我們就将它替換為相應
//的短語。
第二個輸入檔案包括要轉換的文本。
#include "stdafx.h"
#include <iostream>
#include <map>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string rule_path="rule.txt";
string tar_path="target.txt";
string fin_path="final.txt";
ifstream ruleFile(rule_path);
ifstream tarFile(tar_path);
ofstream finFile;
finFile.open(fin_path);
string text;
map<string, string> mymap;
if(ruleFile)
while(getline(ruleFile,text))
string key, value;
int n=text.find_first_of(" ");
key=text.substr(0,n);
value=text.substr(n+1);
//cout<<key<<" "<<value<<endl;
mymap.insert(make_pair(key,value));
}
if(tarFile)
while(getline(tarFile,text))
//顯然我須要把每一個單詞分開,然後跟rule檔案裡的key進行比較,把字元串中的單詞分開
//istringstream是一個好方法。
istringstream is(text);
string s;
while(is>>s)
auto map_it=mymap.find(s);
if(map_it != mymap.cend())
s=map_it->second;
cout<<s<<" ";
finFile<<s<<" ";
cout<<endl;
finFile<<endl;
system("pause");
return 0;
結果: