#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;
}
c++ primer plus 第五版 第七章 编程练习 第 8 题 (字符数组转成字符串,trim使用,判断空行)
最新推荐文章于 2023-12-14 23:32:17 发布