在Ada中,可以使用下划线来编写用于分隔数字的数字,这极大地提高了可读性.例如:1_000_000(相当于1000000)C++有类似的方法吗?
编辑:这是关于源代码的问题,而不是I/O.
Kon*_*lph 10
C++本身并不支持这种做法.但是,这里有两个解决方法:
在C++ 11中使用用户定义的文字 ; 这将允许您编写如下代码:
int x = "1_000_002"_i;
Run Code Online (Sandbox Code Playgroud)
(把它写成一个constexpr会比较棘手 - 但绝对有可能.)
使用简单的宏,这将允许以下代码:
int x = NUM(1,000,002);
Run Code Online (Sandbox Code Playgroud)目前无法做到这一点.但是,有一项提议引入数字分隔符(N3499).他们还没有选择他们想用作分隔符的角色.目前的建议是:
4 815 162 3424`815`162`3424'815'162'3424_815_162_342不幸的是,他们都有提案中描述的问题.
您可以使用用户定义的文字来采用hacky方法:
long long operator "" _s(const char* cstr, size_t)
{
std::string str(cstr);
str.erase(std::remove(str.begin(), str.end(), ','), str.end());
return std::stoll(str);
}
int main()
{
std::cout << "4,815,162,342"_s << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这将打印出来:
4815162342
Run Code Online (Sandbox Code Playgroud)
它只是从给定的文字中删除所有逗号并将其转换为整数.