很好地格式化C++中的数字

dar*_*han 15 c++

在Ada中,可以使用下划线来编写用于分隔数字的数字,这极大地提高了可读性.例如:1_000_000(相当于1000000)C++有类似的方法吗?

编辑:这是关于源代码的问题,而不是I/O.

Kon*_*lph 10

C++本身并不支持这种做法.但是,这里有两个解决方法:


Jos*_*eld 9

目前无法做到这一点.但是,有一项提议引入数字分隔符(N3499).他们还没有选择他们想用作分隔符的角色.目前的建议是:

  • 空间: 4 815 162 342
  • 严肃的口音: 4`815`162`342
  • 单引号: 4'815'162'342
  • 强调: 4_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)

它只是从给定的文字中删除所有逗号并将其转换为整数.