为自定义打印调试实现传递任何类型的变量
Passing a variable of any type for a custom print-debugging implementation
我正在为学校作业实施打印调试系统。如果答案很明显,我很抱歉,我还在学习 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();
}
相关文章:
- C++ 将 CIN 值存储到任何类型的数组中
- 对任何类型的元素数组进行排序
- 任何种类的分数 在任何类型的订单中
- C++ - 声明指向返回任何类型并获取任意数量参数的函数的指针
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 检查模板中 nullptr 的函数指针,了解任何类型的可调用对象
- 如何制作可以接受任何类型的参数的 std::函数和 lambda
- 为自定义打印调试实现传递任何类型的变量
- 我的代码中是否有任何类型的错误,因为它没有给出正确的输出
- 如何在不给它任何类型(如整数)的情况下定义某物?
- 为什么我不能在不进行任何转换的情况下将浮点数放入任何类型的 ptr 中?
- C++如何使虚拟函数返回任何类型的指针
- 任何类型的缓存机制
- 如何在C++中接收任何类型的函数参数并获取函数内传递变量的类型?
- 如何在C++变量中存储任何类型的函数
- 将任何类型的表达式放在 c++ 的初始化列表中在语法上是否正确?
- 第一次捕获捕获任何类型的
- C++包含任何类型的模板类对象的映射
- 接受对任何类型的可变引用的 Lambda
- 将任何类型转换为任何类型