c++ primer plus 第五版 第七章 编程练习 第 8 题 (字符数组转成字符串,trim使用,判断空行)

来源:互联网 发布:javascript 替换对象 编辑:程序博客网 时间:2024/06/06 20:24
#include <iostream>using namespace std;const int SLEN = 30;struct student{        char fullname[SLEN];        char hobby[SLEN];        int ooplevel;};std::string &trim(std::string &);int getinfo(student pa[] , int n){        student *p = pa;        int i , num = 0;        string s;        for(i = 0 ; i < n ; i++)        {                cout << "Please enter the info of the No. " << i+1 << " student" << endl;                cout << "fullname: ";                cin.getline(p->fullname , SLEN , '\n');                s = p->fullname;                if(trim(s).size() == 0)                {                        cout << "输入空行!" << endl;                        break;                }                cout << "hobby: ";                cin >> p->hobby;                cin.ignore();                cout << "ooplevel: ";                cin >> p->ooplevel;                cin.ignore();                p++;                num++;        }        return num;}void display1(student st){        cout << st.fullname << "\n" << st.hobby << "\n" << st.ooplevel << endl;}void display2(const student *ps){        cout << ps->fullname << "\n" << ps->hobby << "\n" << ps->ooplevel << endl;}void display3(const student pa[] , int n){        for(int i = 0 ; i < n ; i++)        {                cout << pa->fullname << "\n" << pa->hobby << "\n" << pa->ooplevel << endl;                pa++;        }}int main(){        cout << "Enter class size: ";        int class_size;        cin >> class_size;        while(cin.get() != '\n')                continue;        student *ptr_stu = new student[class_size];        int entered = getinfo(ptr_stu , class_size);        /*for(int i = 0 ; i < entered ; i++)        {                //display1(ptr_stu[i]);                display2(&ptr_stu[i]);        }*/        display3(ptr_stu , entered);        delete [] ptr_stu;        cout << "Done\n";        return 0;}std::string &trim(std::string &s){        if(s.empty())        {                return s;        }        s.erase(0 , s.find_first_not_of(" "));        s.erase(s.find_last_not_of(" ") + 1);        return s;}

0 0