C++primer 练习11.33:实现你自己版本的单词转换程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++primer 练习11.33:实现你自己版本的单词转换程序相关的知识,希望对你有一定的参考价值。

// 11_33.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<string>
#include<map>
#include<sstream>
#include<fstream>
using namespace std;
//用map文件来建立一个要转换的字符串对应的转换成的字符串
map<string, string> buildMap(ifstream &map_file)
{
    map<string, string> ma;
    string word;
    string convert;
    while (map_file >> word&&getline(map_file, convert))
    {
        ma[word] = convert.substr(1);
    }
    return ma;
}

//返回一个字符串在map中对应的字符串,如果没有,则返回字符串本身
const string& transform(const string &s, const map<string, string> &m)
{
    auto ite = m.find(s);
    if (ite != m.end())
        return ite->second;
    else return s;
}

//单词转换函数,输入一个转换文件,和一个输入文件,打印转换后的文本
void word_transform(ifstream &map_file, ifstream &input)
{
    map<string, string> ma = buildMap(map_file);
    string line, word;
    while (getline(input,line))
    {
        istringstream is(line);
        bool wordtag = true;
        while (is >> word)
        {
            if (wordtag)
                wordtag = false;
            else cout << " ";
            cout << transform(word, ma);
        }
        cout << endl;
    }
}

int main()
{
    word_transform(ifstream("D:\\file\\11.3.6_map.txt"), ifstream("D:\\file\\11.3.6_input.txt"));
    return 0;
}

 

以上是关于C++primer 练习11.33:实现你自己版本的单词转换程序的主要内容,如果未能解决你的问题,请参考以下文章

C++PRIMER第五版练习题答案第一章

C Primer Plus(第六版)第十章 编程练习答案

C++ Primer 0x09 练习题解

C Primer Plus(第六版)第八章 编程练习答案

C Primer 编程练习

c primer plus(五版)编程练习-第八章编程练习