C++primer 第十章 单词转换程序 运行不了解决办法

用的是codeblocks按照书上代码打上去点击运行直接停止显示这里写图片描述
进入到工程目录文件夹(有编译生成的.exe文件)下。我的是E:\Code\Practice\bin\Debug 新建两个文本文件。我的是1.txt 2.txt
**
1.txt内容是:
‘em them
cuz because
gratz grateful
i I
nah no
pos supposed
sez said
tanx thanks
wuz was
2.txt内容是:
nah i sez tanx cuz i wuz pos to
not cuz i wuz gratz**
打开cmd进入到工程目录文件夹(有编译生成的.exe文件)。输入命令 Practice.exe 1.txt 2.txt
(我编译好的.exe文件是Practice.exe。)如图:这里写图片描述
书上的代码:

#include <iostream>
#include<string>
#include<utility>
#include<map>
#include<sstream>
#include<stdexcept>

using namespace std;

ifstream& open_file(ifstream &in,const string &file);


int main(int argc,char **argv)
{
        map<string,string> trans_map;
        string key,value;
        if(argc != 3)
                throw runtime_error("wrong number of arguments");


        ifstream map_file;
       if(!open_file(map_file,argv[1]))
                throw runtime_error("no transformation file");


        while(map_file >> key >> value)
                trans_map.insert(make_pair(key,value));




        ifstream input;
        if(!open_file(input,argv[2]))
                throw runtime_error("no input file");

        string line;
        while(getline(input,line)){
                istringstream stream(line);
                string word;
                bool check_word = true;
                while(stream >> word){
                        map<string,string>::const_iterator map_it =
                        trans_map.find(word);
                        if(map_it != trans_map.end())
                                word = (*map_it).second;
                        if(check_word == true)
                                check_word = false;
                        else
                                cout << " ";
                        cout << word;
                }
                cout << endl;

        }



        return 0;
}
ifstream& open_file(ifstream &in,const string &file)
{
        in.close();    //先关闭 以防已经打开文件
        in.clear();    //清楚讲in中所有值置为有效值  清除任何现有的错误
        //如果打开失败,则流将是处于无效状态
        in.open(file.c_str());   //打开我们得到的文件
        return in; //如果成功打开,则条件状态是好的
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值