假设我有下面的代码:
vector<int> temp = vector<int>(1 000 000 000);
上面的代码不能编译,因为编译器会抱怨空格。是否可以在编译时指示C++省略这些空格,或者以其他方式使数字更易于阅读?
发布于 2018-05-28 18:02:43
我通常为此目的定义常量,因为它节省了计数零,并清楚地表明您对任何查看代码的人意味着什么。例如
#define THOUSAND 1000
#define MILLION 1000000
vector<int> temp = vector<int>(THOUSAND * MILLION);
这清楚地表明,我的意思是10亿没有数错零
显然,如果您愿意,您可以使用枚举。
发布于 2018-05-28 21:41:09
另一个想法可能是:
#define _000 *1000
int k = 1 _000 _000;
发布于 2018-05-29 00:03:56
如果不使用C++14,另一种选择是使用某种字符串继承的类,并在构造函数中使用隐式的int-cast和正则表达式检查来限制数字。我使用CString作为一个简单的例子。
class NumString : public CString
{
public:
NumString(CString number) : num(number) { } //maybe insert some regex-check here
operator long() const
{
CString tmp = num;
tmp.Remove(' ');
return atol(tmp);
}
private:
CString num;
};
NumString a = "1 000 000 000";
int b = a;
bool test = b == 1000000000;
//test will be true
https://stackoverflow.com/questions/50559636
复制相似问题