代码
#include <iostream>
#include <string>
template <class cls>
void _wprintOne(const cls& param)
{
const char* type_name = typeid(param).name();
char* p = const_cast<char*>(type_name);
bool invalid = true;
static char invalid_print_type[5] = { 'c', 'l', 'a', 's', 's' };
// 不打印类对象
for (int i = 0; i < 5; ++i)
{
if (*p != invalid_print_type[i])
{
invalid = false;
break;
}
}
if (invalid)
return;
else
ws << param << ' ';
}
template <>
inline void _wprintOne<std::string>(const std::string& param)
{
std::wcout << param.c_str() << ' ';
}
template <class... Args>
int wprint(Args... args)
{
int ret = sizeof...(args);
(void)std::initializer_list<int> {(_wprintOne<decltype(args)>(args), 0)...};
std::wcout << std::endl;
return ret;
}
踩坑