From 4f280e23d5beffcdcb664b91b260f0d10f49f0d7 Mon Sep 17 00:00:00 2001 From: p68710245 Date: Sat, 27 Apr 2024 22:03:53 +0800 Subject: [PATCH] Add stream_management2.cpp --- stream_management2.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 stream_management2.cpp diff --git a/stream_management2.cpp b/stream_management2.cpp new file mode 100644 index 0000000..5114d18 --- /dev/null +++ b/stream_management2.cpp @@ -0,0 +1,40 @@ +#include +#include +using std::string, std::cout, std::cin; + +class Student +{ + char info[11]; + int age{}; + +public: + friend std::istream &operator>>(std::istream &is, Student &s) + { + // 改为先输入信息,再输入年龄 + cout << "请输入学生的信息(最多10字节):"; + is.getline(s.info, 10); + if (!is) + { + is.clear(); + clearerr(stdin); + is.ignore(std::numeric_limits::max(), '\n'); + } + while (true) + { + cout << "请输入学生的年龄(20-60):"; + is >> s.age; + if (is && s.age >= 20 && s.age <= 60) + break; + is.clear(0); + clearerr(stdin); // 遇到ctrl+z或ctrl+d等情况下,clear并不能直接修复流,需要使用clearerr + } + return is; + } +}; + +int main() +{ + Student s{}; + cin >> s; + return 0; +} \ No newline at end of file