如何使用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
答案 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;
然后将它们用作被乘数?
可能这些名字并不是最好的;你可以找到一个更好的约定,它不会与你程序中的任何东西发生冲突。