码迷,mamicode.com
首页 > 其他好文 > 详细

给定一个字典,通过查找这个字典,替换给定的字符串中的中文为英文

时间:2017-03-18 11:07:23      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:字典   字符串   map   

描述:第一对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;
}


《完》

本文出自 “零蛋蛋” 博客,谢绝转载!

给定一个字典,通过查找这个字典,替换给定的字符串中的中文为英文

标签:字典   字符串   map   

原文地址:http://lingdandan.blog.51cto.com/10697032/1907773

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!