64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iterator>
#include <map>
#include <vector>
#include <iostream>
#include <string>
using namespace std;
typedef map<string,string>::value_type value;
//初始化,需要转换的单词
void setMap(map<string,string> &word){
word.insert(value("'em","them"));
word.insert(value("cuz","because"));
word.insert(value("gratz","grateful"));
word.insert(value("i","I"));
word.insert(value("nah","no"));
word.insert(value("pos","supposed"));
word.insert(value("sez","said"));
word.insert(value("tanx","thanks"));
word.insert(value("wuz","was"));
}
//将命令行输入的单词转分别存储到word数组中
int makeWord(char str[100],char word[20][20]){
int i=0,j=0,k=0;
while(str[i]){
if(str[i]==' '){
word[j][k]='\0';
i++;
j++;
k=0;
continue;
}
word[j][k]=str[i];
i++;
k++;
}
word[j][k]='\0';
return j+1;
}
//替换所需替换的单词
void convert(map<string,string> &c_word,char word[20][20],int count){
map<string,string>::iterator iter;
for(int i=0;i<count;i++){
iter=c_word.find(word[i]);
if(iter!=c_word.end()){
strcpy(word[i],const_cast<char*>(iter->second.c_str()));
}
}
}
int main(int argc,char ** argv){
map<string,string> c_word;
setMap(c_word);
int count; //存储输入的单词的个数
char str[100]; //接收用户输入的单词。
char word[20][20]; //存储整理好之后的单词
cin.getline(str,100);
count=makeWord(str,word);
convert(c_word,word,count);
for(int i=0;i<count;i++){
cout << word[i] << " ";
}
cout << endl;
return 0;
}