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

Input numbers in C++ with postfix notation

本文关键字:输入 C++ 数字 表示 后缀      更新时间:2023-10-16

如何使用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

你想使用 C++11 的 operator"" ,像这样:

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

然后,您可以创建如下常量:

long distance = 100k;

你真的想要一个图书馆吗?自己这样定义东西怎么样:

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

然后只是将它们用作乘法?

可能这些名称不是最好的;你可以找到一个更好的约定,不会与程序中的任何内容冲突。