用的是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; //如果成功打开,则条件状态是好的
}