C++ primer(第五版)8.2.1节练习答案

来源:互联网 发布:样加入淘宝客去推广 编辑:程序博客网 时间:2024/05/18 08:00

练习8.4:编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个独立的元素存于vector中。

解答:

#include<iostream>#include<fstream>#include<string>#include<vector>using std::ifstream;using std::cout;using std::endl;using std::string;using std::vector;void ReadFileToVec(const string& filename,vector<string>& vec){ifstream ifs(filename);if(ifs){string buf;while(std::getline(ifs,buf))vec.push_back(buf);}}int main(){vector<string> svec;ReadFileToVec("81.cpp",svec); //81.cpp为当前目录下的一个文件for(const auto &str:svec)cout<<str<<endl;return 0;}


练习8.5:重写上面的程序,将每个单词作为一个独立的元素进行存储。


解答:

#include<iostream>#include<string>#include<vector>#include<fstream>using std::ifstream;using std::cout;using std::endl;using std::string;using std::vector;void ReadFileToVec(const string &filename, vector<string>& vec){ifstream ifs(filename);if(ifs){string buf;while(ifs>>buf)vec.push_back(buf);}}int main(){vector<string> svec;ReadFileToVec("81.cpp",svec);for(const auto &word:svec)cout<<word<<endl;return 0;}


练习8.6:重写7.1.1节的书店程序(第229页),从一个文件中读取交易记录。将文件名作为一个参数传递给main(参见6.2.5节,第196页)。


解答:

#include<iostream>#include<fstream>#include<../ch07/ex7_26.h>//Sales_data 所在目录using std::cout;using std::endl;using std::ifstream;using std::cerr;int main(int argc,char **argv){ifstream input(argv[1]);Sales_data total;if(read(input,total)){Sales_data trans;while(read(input,trans)){if(total.isbn() == trans.isbn())total.combine(trans);else{printf(cout,total)<<endl;total = trans;}}printf(cout,total)<<endl;}else{cerr<<"No data?!"<<endl;}return 0;}



0 0
原创粉丝点击