原来是这样输出的吗
题目描述
实现 Printer
类,使得其对象可以通过 printer(a)(b)(c)
的方式输出 a, b, c
。需要支持以下数据类型的输出:
int
char
double
- C 风格字符串
遇到空的圆括号,则输出一个换行。
关于输入
一行,两个空格分隔的整数 x 和 y。整数在 int
范围内。
关于输出
第一行为 "The sum of x and y is s!"
;其中 s
是 x 和 y 的和。
第二行为 "The square root of x is r."
;其中 r
是 x 的算术平方根。
输出算术类型时,使用默认的 std::ostream
设置。
参考答案
#include <iostream>
#include <cmath>
class Printer {
public:
Printer operator()() {
std::cout << std::endl;
return {};
}
Printer operator()(char x) {
std::cout << x;
return {};
}
Printer operator()(int x) {
std::cout << x;
return {};
}
Printer operator()(double x) {
std::cout << x;
return {};
}
Printer operator()(const char* x) {
std::cout << x;
return {};
}
};
int main() {
Printer printer;
int x, y;
std::cin >> x >> y;
printer("The sum of ")(x)(" and ")(y)(" is ")(x + y)('!')();
double root = std::sqrt(x);
printer("The square root of ")(x)(" is ")(root)('.')();
}
#include <iostream>
#include <cmath>
class Printer {
public:
Printer operator()() {
std::cout << std::endl;
return {};
}
template <typename T>
Printer operator()(const T& x) {
std::cout << x;
return {};
}
};
int main() {
Printer printer;
int x, y;
std::cin >> x >> y;
printer("The sum of ")(x)(" and ")(y)(" is ")(x + y)('!')();
double root = std::sqrt(x);
printer("The square root of ")(x)(" is ")(root)('.')();
}