为自定义打印调试实现传递任何类型的变量

Passing a variable of any type for a custom print-debugging implementation

本文关键字:任何 类型 变量 自定义 打印 调试 实现      更新时间:2023-10-16

我正在为学校作业实施打印调试系统。如果答案很明显,我很抱歉,我还在学习 c++。

我想创建一个函数,它接受三个参数:错误、变量名称和变量本身,并将这些信息记录在以后可以查看的地方。它将像这样工作:

int bad_variable = 2;
debug_log("Variable unexpected value", "bad_variable", bad_variable);

问题是,我不知道在解析bad_variable时会发生什么类型的变量debug_log,因此无法定义它。据我所知,没有办法解析未知类型的变量......但是,C++标准库在函数std::to_string中就是这样做的!

std::to_string可能是我问题的答案,我可以将我的bad_variable传递给std::to_string以将其转换为字符串,debug_log期望输出字符串。但是,每次调用 log 函数时,我都必须键入std::to_string

debug_log("Variable unexpected value", "bad_variable", std::to_string(bad_variable));

对我来说,这似乎是一个拼凑的解决方案,必须有一个更简单的答案。我想使这个调试函数尽可能简单。如何创建一个采用未知变量类型的函数,并生成包含该变量值的字符串?

如何创建一个采用未知变量类型的函数,并生成一个包含该变量值的字符串?

由于您已C++标记了此问题,因此一种不错的方法是使用模板:

template<typename t_value>
string convToString(t_value value)  {
std::ostringstream oss; 
oss << value;  
return oss.str();
}