任何人都知道是否可以使用printf打印VARIABLE位数?
以下代码行正好打印2:
printf("%.2lf", x);
Run Code Online (Sandbox Code Playgroud)
但是我要说我有一个变量:
int precision = 2;
Run Code Online (Sandbox Code Playgroud)
有没有办法在printf中使用它来指定位数?
否则我将不得不写一个'switch'或'if'结构.
谢谢
我正在重构一个大类 - 让我们称之为Big- 它有大量的复制粘贴代码.这些复制粘贴代码中switch case的大部分存在于s中,其中只涉及的类型最终不同.代码基于enum类的成员变量进行切换,其值仅在运行时已知.
我尝试解决这个问题涉及到一个Dispatcher类,它通过一个static名为的函数查找适当类型的函数lookup().始终调用执行实际工作的函数,go()并且必须在包装器类模板中定义它们(其唯一参数是enum当前正在打开的运行时值).这些go()功能可能是也可能不是模板功能本身.
这是代码的提炼版本.我对这个问题表示道歉,但这一点很短,我没有失去重要的背景.
#include <cassert>
class Big
{
public:
enum RuntimeValue { a, b };
Big(RuntimeValue rv) : _rv(rv) { }
bool equals(int i1, int i2)
{
return Dispatcher<Equals, bool(int, int)>::lookup(_rv)(i1, i2);
}
template<typename T>
bool isConvertibleTo(int i)
{
return Dispatcher<IsConvertibleTo, bool(int)>::lookup<T>(_rv)(i);
}
private:
template<RuntimeValue RV>
struct Equals
{
static bool go(int i1, int i2)
{
// Pretend …Run Code Online (Sandbox Code Playgroud)