zoukankan      html  css  js  c++  java
  • cppPrimer学习8th


    title: cppPrimer学习8th
    date: 2020/3/10 20:37:05
    toc: true

    8.1

    8.2

    /*
    编写函数,接受一个istream &参数,返回值也是istream&。此函数必须从给定流中读取数据,直至遇到文件结束标识符时停止。
    它将读取的数据打印在标准输出上。完成这些操作后,在返回流之前,对流进行复位,使其处于有效状态。
    */
    
    #include <iostream>
    using namespace std;
    
    istream &readeof(istream &in)
    {
        string s;
        while (in >> s && !in.eof())
        {
            cout << s;
            in.clear();
        }
        in.clear();
    }
    
    int main(int argc, char const *argv[])
    {
        readeof(cin);
        cout << "Get EOF" << endl;
        while (1)
            ;
        return 0;
    }
    
    

    8.3

    while (cin >> i) /* ... */
    // 遇到结束符
    // 如果i是int 但是输入了其他字符
    

    8.4

    8.5

    /*
    8.4 编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个独立的元素存于vector中
    8.5 按照单词分割
    */
    
    #include <string>
    #include <vector>
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    void Each(istream &in, string option)
    {
        if (!in)
        {
            cerr << "Check FIle" << endl;
            while (1)
                ;
        }
        string s;
        vector<string> v;
    
        if (option == "line")
        {
            while (getline(in, s))
                v.push_back(s);
        }
        else
        {
            while (in >> s)
                v.push_back(s);
        }
    
        for (auto a : v)
        {
            cout << a << endl;
        }
    }
    
    int main(int argc, char const *argv[])
    {
        string filepath = "C:\JLink.log";
        ifstream in(filepath);
    
        cout << "Split By Line" << endl;
        Each(in, "line");
        in.close();
    
        cout << "Split By Word" << endl;
        in.open(filepath);
        Each(in, "word");
    
        while (1)
            ;
        return 0;
    }
    
    

    8.9

    /*使用8.1.2节第一个练习所编写的函数打印一个istringstream对象的内容*/
    
    /*
    编写函数,接受一个istream &参数,返回值也是istream&。此函数必须从给定流中读取数据,直至遇到文件结束标识符时停止。
    它将读取的数据打印在标准输出上。完成这些操作后,在返回流之前,对流进行复位,使其处于有效状态。
    */
    
    #include <iostream>
    #include <sstream>
    using namespace std;
    
    istream &readeof(istream &in)
    {
        string s;
        while (in >> s)
        {
            cout << s;
            in.clear();
        }
        cout << endl;
        in.clear();
    }
    
    int main(int argc, char const *argv[])
    {
        //readeof(cin);
        stringstream ss("1234567");
        readeof(ss);
        cout << "Get EOF" << endl;
        while (1)
            ;
        return 0;
    }
    
    

    8.10

    /*
    8.10 编写程序,将来自一个文件中的行保存在一个vector中,然后使用一个istringstream从vector读取数据元素,每次读取一个单词。
    */
    
    #include <sstream>
    #include <string>
    #include <vector>
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main(int argc, char const *argv[])
    {
        string filepath = "C:\JLink.log";
        ifstream in(filepath);
    
        if (!in)
        {
            cout << "Check File" << endl;
        }
    
        vector<string> line;
        string s;
        while (getline(in, s))
        {
            line.push_back(s);
        }
    
        for (auto c : line)
        {
            stringstream ss(c);
            string ch;
            while (ss >> ch)
            {
                cout << ch << endl;
            }
        }
    
        while (1)
            ;
        return 0;
    }
    
    

    8.11

    /*
    8.11 本节的程序在外层while循环中定义了istringstream对象。
    如果record对象定义在循环之外,你需要对程序做怎样的修改?
    重写程序,将record的定义移到while循环之外,验证你设想的修改方法是否正确。
    */
    
    //使用string的clear
    

    8.12

    我们为什么没有在PersonInfo中使用类内初始化?
    
    因为这里我们使用了聚合类,不需要类内初始化
    

    8.14

    我们为什么要将entry和nums定义为const auto&。
    
    使用引用避免拷贝
    使用const 因为不会赋值
    
  • 相关阅读:
    Codeforces Round #600 (Div. 2) A. Single Push
    Codeforces Round #600 (Div. 2) B. Silly Mistake
    106. 从中序与后序遍历序列构造二叉树
    23. 合并K个升序链表
    203. 移除链表元素
    328. 奇偶链表
    86. 分隔链表
    面试题 02.05. 链表求和
    面试题 02.02. 返回倒数第 k 个节点
    剑指 Offer 18. 删除链表的节点
  • 原文地址:https://www.cnblogs.com/zongzi10010/p/12490791.html
Copyright © 2011-2022 走看看