我已经使用模板t创建了一个c ++类 我想知道是否有任何格式说明符可以打印或将任何值转换为其格式
template <typename T>
void AssertAreEqual(T t_Expected,T t_Actual, int line){
if (t_Expected != t_Actual)
printf("FAIL - Line < %d > - Expected value does not match with expected\tExpected: < %d > Actual < %d >\n",line,t_Expected,t_Actual);
}
例如:我想要一个全局或通用格式说明符而不是%d以便能够同时打印字符串或char *
答案 0 :(得分:2)
printf
可变,它取决于您告诉您要打印的内容。据我所知,没有办法告诉它。
您可以使用standard library's streams来解决问题。
operator <<
对于所有内置类型都过载,因此将为您选择正确的过载。您可以将代码更改为
template <typename T>
void AssertAreEqual(T t_Expected,T t_Actual, int line){
if (t_Expected != t_Actual)
std::cerr << "FAIL - Line < " << line << " > - Expected value does not match with expected\tExpected: < " << t_Expected << " > Actual < " t_Actual << " >\n";
}
这还允许代码与提供operator !=
和operator <<
的任何类型一起使用