《C++primer》v5 第8章 IO库 读书笔记 习题答案

8.1、8.2

这一章不咋会啊。。

istream &read(istream &is)
{
    int a;
    auto old_state=is.rdstate();
    is.clear();
    is>>a;
    is.setstate(old_state);
    return is;
}
int main()
{
    read(cin);
    return 0;
}

8.3

读到eof或错误类型的时候

8.4

#include<fstream>
using namespace std;
int main()
{
    ifstream in("ifile.txt");
    vector<int> vec;
    int a;
    while(in>>a)
        vec.push_back(a);
    for(auto i:vec)
        cout<<i<<endl;
    return 0;
}

8.5

#include<fstream>
using namespace std;
int main()
{
    ifstream in("ifile.txt");
    vector<string> vec;
    string s;
    while(in>>s)
        vec.push_back(s);
    for(auto i:vec)
        cout<<i<<endl;
    return 0;
}

8.6、8.7、8.8

暂略。。

8.9

#include<sstream>
using namespace std;
istream &read(istream &is)
{
    string s;
    auto old_state=is.rdstate();
    is.clear();
    while(is>>s)
        cout<<s<<endl;
    is.setstate(old_state);
    return is;
}
int main()
{
    string s;
    getline(cin,s);
    istringstream is(s);
    read(is);
    return 0;
}

8.10

#include<fstream>
#include<sstream>
using namespace std;
int main()
{
    fstream in("ifile.txt");
    string s;
    vector<string> vec;
    while(getline(in,s))
    {
        vec.push_back(s);
    }
    for(auto &c:vec)
    {
        istringstream isout(c);
        string word;
        while(isout>>word)
            cout<<word<<endl;
    }
    return 0;
}

8.11

使用clear和str两个成员函数

#include<fstream>
#include<sstream>
using namespace std;
int main()
{
    fstream in("ifile.txt");
    string s;
    vector<string> vec;
    while(getline(in,s))
    {
        vec.push_back(s);
    }
    istringstream isout;
    for(int i=0; i<vec.size(); ++i)
    {
        isout.clear();
        isout.str(vec[i]);
        string word;
        while(isout>>word)
            cout<<word<<endl;
    }
    return 0;
}

8.12

?

8.13

暂略。。

时间: 2024-10-22 11:35:04

《C++primer》v5 第8章 IO库 读书笔记 习题答案的相关文章

《C++primer》v5 第2章 C++基础 读书笔记 习题答案

2.1 int,long long ,short 可表示范围和占用内存空间不同.具体与计算机有关. 无符号类型只能表示0和正数,带符号类型可以表示负数,0,正数. float是单精度,一般占用4个字节,double是双精度,一般占用8个字节,它们可表示的数据范围也不相同. 2.2 利率用double,本金和付款用int 2.3 unsigned u=10,u2=42; cout<<u2-u<<endl; cout<<u-u2<<endl; int i=10,

《C++primer》v5 第12章 动态内存 读书笔记 习题答案

这一章暂时没写完,先留着以后再写. 在C++程序中,程序员可以给手动开辟内存,但是这块内存需要手动释放,不便管理,因此新标准提供智能指针类型来管理动态对象.它负责自动释放所指向的对象. shared_prt允许多个指针指向同一个对象 unique_ptr独占所指向的对象 weak_ptr是一个弱引用,指向shared_ptr所管理的对象 一些操作: p=q;//递减p的引用计数,递增q的引用计数 shared_ptr<T> p(q);//p是q的拷贝,递增q的引用计数 通过make_share

《C++primer》v5 第10章 泛型算法 读书笔记 习题答案

10.1 using namespace std; int main() { vector<int> vec; int a; cin>>a; int v; while(cin>>v) vec.push_back(v); cout<<a<<" : "<<count(vec.begin(),vec.end(),a)<<endl; return 0; } 10.2 using namespace std; i

《C++primer》v5 第11章 关联容器 读书笔记 习题答案

11.1 map是关联容器,vector是顺序容器 11.2 略 11.3 int main() { map<string,int> word; string s; while(cin>>s) word[s]++; for(auto i:word) cout<<i.first<<" "<<i.second<<endl; return 0; } 11.4 void convers(string &s) { s

《C++primer》v5 第9章 顺序容器 读书笔记 习题答案

9.1 (a)list.可以快速插入. (b)deque.支持尾部快速插入和头部快速删除. (c)vector或者deque. 9.2 list<deque<int> > l; 9.3 它的范围是该容器的第一个元素和尾元素之后.区间左闭右开. 9.4 #include<iostream> #include<algorithm> #include<cstdio> #include<list> #include<deque>

《C++primer》v5 第5章 语句 读书笔记 习题答案

5.1 空语句只有一个";".如果什么也不想做可以使用空语句. 5.2 用花括号{}括起来的叫块,也叫复合语句.有多条语句作用在同一个作用域时,需要用花括号括起来. 5.3 降低了. 5.4 (a)每次迭代时候会初始化iter,但是iter缺少初值,所以这段代码根本不会通过编译.另外这里的括号需要一个bool类型的,而定义迭代器根本不会返回一个bool类型.假如上面那些问题都可以通过,每次迭代都会初始化这个iter,会导致死循环. (b)我试了一下编译未通过是因为没找到适合的find函

《C++primer》v5 第3章 字符串、向量和数组 读书笔记 习题答案

3.1略 3.2 string str; //读行 while(getline(cin,str)) cout<<str<<endl; //读单个词 while(cin>>str) cout<<str<<endl; 3.3 输入运算符读到空白符结束 getline读到换行符结束,并丢弃换行符 3.4 比较大小. 比较大小是比较的第一个不相同的字符的大小. int main() { string a,b; cin>>a>>b;

《C++primer》v5 第1章 开始 读书笔记 习题答案

从今天开始在博客里写C++primer的文字.主要以后面的习题作业为主,会有必要的知识点补充. 本人也是菜鸟,可能有不对之处,还望指出. 前期内容可能会比较水. 1.1略 1.2略 1.3 cin和cout分别是istream和ostream的对象. #include<iostream> using namespace std; int main() { cout<<"Hello,world"<<endl; return 0; } 1.4 #incl

《C++primer》v5 第4章 表达式 读书笔记 习题答案

4.1 105 4.2 *vec.begin()=*(vec.begin())//先调用点运算符,再解引用 *vec.begin()+1=(*vec.begin())+1//先解引用,再加一 4.3略? 4.4 (12/3*4)+(5*15)+(24%4/2)=91 4.5 (a)-86(b)-16 (c)0 (d)0 4.6 n%2 4.7 溢出:计算结果超出该数据类型所能表示的范围 2147483647+1 1U-2 ... 4.8 比较低.. 4.9 首先判断cp是否为空指针,若非空指针则