首页 > 代码库 > 给定一个字典,通过查找这个字典,替换给定的字符串中的中文为英文
给定一个字典,通过查找这个字典,替换给定的字符串中的中文为英文
描述:第一对START和END中给定的是字典
第二对START和END是给定字符串
输入:
START
hello nihao
yes shi
like xihuan
world shijie
gril nvhai
END
START
i‘m a nvhai!
i xihuan shijie.
nihao
END
输出:
i‘m a gril!
i like world.
hello
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <vector> #include <map> using namespace std; const string Start = "START"; const string End = "END"; int main() { map<string, string> myMap; string value; while (cin >> value){ if (value == Start) continue; else if (value == End) break; else{ string key; cin >> key; myMap[key] = value; } } cin.get(); string linestr; vector<string> historyBook; while (getline(cin, linestr)){ if (linestr == Start) continue; else if (linestr == End) break; else{ historyBook.push_back(linestr); } } int size = historyBook.size(); int line = 0; while (line < size){ string& curline = historyBook[line]; int strSize = curline.size(); int f = 0, l = 0; while (l<=strSize){ if (l == strSize || curline[l] == ‘,‘ || curline[l] == ‘ ‘ || curline[l] == ‘!‘ || curline[l] == ‘.‘){ //读完一个单词 char curWord[20];//假设每个单词长度不超过20 strncpy(curWord, (char*)&curline[f], l - f); curWord[l - f] = ‘\0‘;//把当前读完的单词放入curWord中 string tmpkey = curWord; map<string,string>::iterator it=myMap.find(tmpkey); if (it != myMap.end()){//如果未找到,it==myMap.end() curline.erase(f, l - f);//删除原来的汉语部分 curline.insert(f, it->second);//在原来的位置插入所替换的英文 f = f + (it->second).size()+1; l = f; strSize += ((it->second).size() - (it->first).size());//长度改变,所以要更新 } else{ f = l + 1; l = f; } } else ++l; } ++line; } for (int i = 0; i < historyBook.size(); ++i){ cout << historyBook[i] << endl; } system("pause"); return 0; }
《完》
本文出自 “零蛋蛋” 博客,谢绝转载!
给定一个字典,通过查找这个字典,替换给定的字符串中的中文为英文
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。