[2018年4月23号]C++ primer 课后练习 第七章 类 第八章 IO

7.56:

   在成员的声明之前加上关键字static使得其与类关联在一起,和其他成员一样,静态成员可以是public的或private的,静态数据成员的类型可以是常量,引用,指针,类型等等,类的静态成员存在于任何对象之外,对象中不包含任何与静态数据成员有关的函数,静态成员函数也不与任何对象绑定在一起

优点:静态成员能用于某些场景,普通成员不能,比如函数默认实参就可以用静态变量初始化

7.57

class Account {
public:
    void calculate(){amount += amount * interestRate;}
    static double rate(){return interestRate;}
    static void rate(double);

private:
    string owner;
    double amount;
    static double interestRate ;
    static double initRate();
};
double Account::interestRate = 10;


7.58:

因为静态数据成员不属于类的任何一个对象,所以它们并不是在创建类的对象时被定义的,一般来说我们不能在类的内部初始化静态成员

所以static double rate = 6.5和static vector<double > vec(vecSize);错误,需要在类外定义

因为vecSize作用仅限于给定vec一个范围,所以不需要在类外额外来定义它.

修改后如下

class Example {
public:
    static double rate ;
    static const int vecSize = 20;
    static vector<double > vec;
};

double Example::rate = 6.5;
vector<double > Example::vec(vecSize);

8.1

扫描二维码关注公众号,回复: 391319 查看本文章
istream& read(istream& is){
    string i;
    while (is>> i)
    {
        cout << i ;
    }
    is.clear();
    return is;
}

8.2



8.3 键入文件结束标识符时候会终止循环

8.4

    ifstream is("test_2.txt");
    string tmpStr;
    vector<string > strVec;
    while(getline(is, tmpStr)){
        strVec.push_back(tmpStr);
    }

8.5

在我理解中单词应该是好几个字母拼凑在一起的,例如when,if 以空格为分割形成的字母组,想了挺久,没有头绪,翻阅网上他人的答案,都是以单个字母为一个单词输入到vec,自然是不满意的,研究了一会终于是作出了以空格为分割的vec

结果如下:

int main() {
    ifstream is("test_2.txt");
    string tmpStr;
    vector<string > strVec(1);
    while(getline(is, tmpStr)){
        for(int i = 0 ; i!= tmpStr.size();i++){
            if(tmpStr[i] != ' '){
                strVec[strVec.size()-1] += tmpStr[i];
            }else{
                strVec.push_back("");
            }
        }
    }
    for(auto str : strVec){
        cout<< str<<endl;
    }
    for (;;);
    return 0;
}

优化后的版本

int main() {
    ifstream is("test_2.txt");
    string tmpStr;
    vector<string > strVec(0);
    while (is >> tmpStr && !is.eof()) {
        cout << tmpStr << endl;
        strVec.push_back(tmpStr);
    }
    for (;;);
    return 0;
}

 
 




8.6:略


猜你喜欢

转载自blog.csdn.net/qq_22478401/article/details/80045368
今日推荐