小编Spi*_*ire的帖子

使用printf打印double的可变位数

任何人都知道是否可以使用printf打印VARIABLE位数?

以下代码行正好打印2:

printf("%.2lf", x);
Run Code Online (Sandbox Code Playgroud)

但是我要说我有一个变量:

int precision = 2;
Run Code Online (Sandbox Code Playgroud)

有没有办法在printf中使用它来指定位数?

否则我将不得不写一个'switch'或'if'结构.

谢谢

c printf

6
推荐指数
2
解决办法
5781
查看次数

带有模板参数的C++函数调度

我正在重构一个大类 - 让我们称之为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)

c++ templates dispatch

5
推荐指数
1
解决办法
1929
查看次数

标签 统计

c ×1

c++ ×1

dispatch ×1

printf ×1

templates ×1