使用后缀表示法在C ++中输入数字

时间:2013-09-25 08:40:51

标签: c++ input numbers postfix-notation

如何使用C ++输入100k或30M或41.2G等数字?是否有图书馆功能?或者我应该自己编写解析器?

编辑: 我自己想出了一个解决方案:

static float my_strtod(const char *str)
{
    char *pEnd;
    double val = strtod(str, &pEnd);
    switch (*pEnd)
    {
        case 'k' : val *= 1.0e3; break;
        case 'M' : val *= 1.0e6; break;
        case 'G' : val *= 1.0e9; break;
    }
    return val;
} // end of my_strtod

2 个答案:

答案 0 :(得分:2)

你想使用C ++ 11的operator"",如下所示:

constexpr long operator"" k(long d) {
     return d * 1000;
}

然后你可以创建如下的常量:

long distance = 100k;

答案 1 :(得分:0)

你真的想要一个图书馆吗?如何以这种方式自己定义东西:

typedef double T;
T k = 1e3;
T M = 1e6;
T G = 1e9;
T m = 1e-3;
T u = 1e-6;

然后将它们用作被乘数?

可能这些名字并不是最好的;你可以找到一个更好的约定,它不会与你程序中的任何东西发生冲突。