我正在使用Visual Studio 2008,我想实现没有变量参数列表的字符串格式化功能.
如何使用pre-c ++ 0x(VS2008)实现"Variadic Template"?
有没有像启动这样实现这个的库?
或者另一种实现方式?
这是我的示例代码.(当然,这不能被遵守,因为我使用的是VS2008.)
bool VarPrint(std::ostringstream& out, const std::string& s)
{
std::string::size_type offset = 0;
if((offset = s.find("%")) != std::string::npos)
{
if(!(offset != s.size() - 1 && s[offset + 1] == '%'))
{
ASSERT(!"Missing Arguments!");
return false;
}
}
out << s;
return true;
}
template<typename T, typename... Args>
bool VarPrint(std::ostringstream& out, const std::string& s, const T& value, const Args&... args)
{
std::string::size_type prev_offset = 0;
std::string::size_type curr_offset = 0;
while((curr_offset = …Run Code Online (Sandbox Code Playgroud) 是否可以使用递归宏来编写所需数量的函数参数.例如:
void foo( const char (&row1)[3] , const char (&row2)[3] , const char (&row3)[3] )
{
}
void foo( const char (&row1)[3] , const char (&row2)[3] , const char (&row3)[3] , const char (&row4)[3] , const char (&row5)[3] , const char (&row6)[3] )
{
}
Run Code Online (Sandbox Code Playgroud)
我知道引入了可变参数模板来解决这样的问题,但我仅限于C++ 98 ATM.