C++Primer第五版 第八章习题答案(1~10)
2017-02-23 09:10
495 查看
1:知识点1:IO类分别定义在三个独立的头文件中
<`iostream>定义了基于读写流的基本类型<`fstream>定义了读写命名文件的类型
<`sstream>定义了读写内存string对象的类型
三个头文件皆在标准库中。
istream& func(istream &is) { string mm; while(is >> mm) cout<<mm<<endl; is.clear();//对流进行置位的函数 return is; }
遇到的问题:本地函数定义非法:C/C++不允许在函数额内部再次定义函数
2:将上面函数的参数改为cin即可
3:
知识点:badbit :流已崩溃eofbit :流达到了文件结束位置
failbit :IO操作失败
bad、eof、fail在对应错误位置时,cin会在错误状态,即循环中止
4:知识点:文件的读入与重写,两种文件流皆有open和close函数,之后视情况打开读或者写模式
string infile;//代表文件名 ifstream in(infile);//ifstream定义了一个输入流in(文件流),它被初始化从文件中读取数据 if (in)//检查文件的读取是否成功,养成良好的习惯! { //...... } else { cerr<<"cannot open this file: "<<infile<<endl; } in.close();//关闭文件 in.open(infile + ".copy");//关闭文件后,才可以打开另一个文件 ofstream out;//ofstream不与任何文件相关联,只定义了一个输出流out(文件流) if (out) { } else { cerr<<"sorry"<<endl; } out.open(file + ".copy"); /*当一个fstream对象被销毁时,close函数会被自动调用*/
答案:
#include<iostream> #include<fstream> #include<sstream> #include<string> #include<vector> using namespace std; int main(int argc, char**argv) { /*两种文件流皆有open和close函数,之后视情况打开读或者写模式*/ string infile = "1.txt";//代表文件名 vector<string> vec;//声明一个vector ifstream in(infile);//ifstream定义了一个输入流in(文件流),它被初始化从文件中读取数据 if (in)//检查文件的读取是否成功,养成良好的习惯! { string buf; while (getline(in,buf))//每行独立输入的方法,利用getline { vec.push_back(buf); } } else { cerr<<"cannot open this file: "<<infile<<endl; } for (int i = 0;i < vec.size();++i) { cout<<vec[i]<<endl; } return 0; }
5:
#include<iostream> #include<fstream> #include<sstream> #include<string> #include<vector> using namespace std; int main(int argc, char**argv) { /*两种文件流皆有open和close函数,之后视情况打开读或者写模式*/ string infile = "1.txt";//代表文件名,注意需要放在当前目录下 vector<string> vec;//声明一个vector ifstream in(infile);//ifstream定义了一个输入流in(文件流),它被初始化从文件中读取数据 if (in)//检查文件的读取是否成功,养成良好的习惯! { string buf; while (in >> buf)//每个单词的独立输入,自动以空格为间隔 { vec.push_back(buf); } } else { cerr<<"cannot open this file: "<<infile<<endl; } for (int i = 0;i < vec.size();++i) { cout<<vec[i]<<endl; } return 0; }
6:P284页一模一样。
7:将输出文件名作为第二个参数,即为argv[2]
fstream out(argv[2])
8:知识点:文件模式,指明在打开文件以后如何使用,app模式(append)定位到文件末尾
ofstream out("file",ofstream::app);//定位到文件结尾,保存文件中的已有数据
9:知识点:istringstream从string中读取数据,保存在其对象之中
#include<iostream> #include<fstream> #include<sstream> #include<string> #include<vector> using namespace std; istream& func(istream& is) { string buf; while (is >> buf) std::cout << buf << std::endl; is.clear(); return is; } int main(int argc, char**argv) { /*两种文件流皆有open和close函数,之后视情况打开读或者写模式*/ string infile = "1.txt";//代表文件名 vector<string> vec;//声明一个vector ifstream in(infile);//ifstream定义了一个输入流in(文件流),它被初始化从文件中读取数据 istringstream iss("hello"); func(iss); if (in)//检查文件的读取是否成功,养成良好的习惯! { string buf; while (in >> buf)//每个单词的独立输入,自动以空格为间隔 { vec.push_back(buf); } } else { cerr<<"cannot open this file: "<<infile<<endl; } for (int i = 0;i < vec.size();++i) { cout<<vec[i]<<endl; } return 0; }
10:
#include<iostream> #include<fstream> #include<sstream> #include<string> #include<vector> using namespace std; int main(int argc, char**argv) { /*两种文件流皆有open和close函数,之后视情况打开读或者写模式*/ string infile = "1.txt";//代表文件名 vector<string> vec;//声明一个vector ifstream in(infile);//ifstream定义了一个输入流in(文件流),它被初始化从文件中读取数据 if (in)//检查文件的读取是否成功,养成良好的习惯! { string buf; while (getline(in,buf))//每个单词的独立输入,自动以空格为间隔 { vec.push_back(buf); } } else { cerr<<"cannot open this file: "<<infile<<endl; } for (int i = 0;i < vec.size();++i) { istringstream iss(vec[i]);//将istringstream与vec[i]相绑定 string word; while(iss >> word) cout<<word<<endl; } return 0; }
相关文章推荐
- C++Primer第五版 第十五章习题答案(1~10)
- C++Primer第五版 第十章习题答案(1~10)
- C++Primer第五版 第十八章习题答案(1~10)
- C++Primer第五版 第三章习题答案(1~10)
- C++Primer第五版 第四章习题答案(1~10)
- C++Primer第五版 第八章习题答案(11~14)
- C++Primer第五版 第九章习题答案(1~10)
- C++Primer第五版 第十三章习题答案(1~10)
- C++Primer第五版 第十六章习题答案(1~10)
- C++Primer第五版 第十九章习题答案(1~10)
- C++Primer第五版 第七章习题答案(1~10)
- C++Primer第五版 第五章习题答案(1~10)
- C++Primer第五版 第二章习题答案(1~10)
- C++Primer第五版 第十一章习题答案(1~10)
- C++Primer第五版 第十二章习题答案(1~10)
- c++primer(第五版) 第十三章 拷贝控制习题答案
- C++Primer第五版 第九章习题答案(51~52)
- C++Primer第五版 第十一章习题答案(11~20)
- C++Primer第五版 第十二章习题答案(11~20)
- C++Primer第五版 第十六章习题答案(31~40)