72行代码做出来了
2025-07-16 20:42:47
发布于:上海
修改了十多次,老是忘记写大括号,没有在相应函数的命名空间里声明(早知道用万能头了)
以下是代码:
#include <iostream>
#include <string>
#include <limits>
#include <stdexcept>
#include <chrono>
#include <climits>
#include <cstdlib>
namespace InputUtils {
bool isInteger(const std::string& s) {
if(s.empty()) return false;
size_t i = (s[0] == '-') ? 1 : 0;
for(; i < s.size(); ++i) {
if(!isdigit(s[i])) return false;
}
return true;
}
int safeConvert(const std::string& s) {
try {
size_t pos = 0;
long val = std::stol(s, &pos);
if(pos != s.length() || val < INT_MIN || val > INT_MAX) {
throw std::out_of_range("");
}
return static_cast<int>(val);
} catch(...) {
throw std::invalid_argument("");
}
}
}
namespace MathUtils {
int safeAdd(int a, int b) {
if((b > 0 && a > INT_MAX - b) ||
(b < 0 && a < INT_MIN - b)) {
throw std::overflow_error("");
}
return a + b;
}
}
class Timer {
stdchronosteady_clocktime_point start;
public:
Timer() { start = stdchronosteady_clocknow(); }
long elapsed() const {
return stdchronoduration_caststd::chrono::microseconds(
stdchronosteady_clock::now() - start).count();
}
};
int main() {
Timer timer;
stdstring a_str, b_str;
stdcin >> a_str >> b_str;
if(!InputUtils::isInteger(a_str) || !InputUtils::isInteger(b_str)) {
return EXIT_FAILURE;
}
try {
int a = InputUtils::safeConvert(a_str);
int b = InputUtils::safeConvert(b_str);
int result = MathUtils::safeAdd(a, b);
std::cout << result;
} catch(...) {
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
全部评论 1
我直接复制的,结果出问题了,显示错误
2025-07-16 来自 上海
0
有帮助,赞一个