首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中很好地格式化数字

在C++中很好地格式化数字
EN

Stack Overflow用户
提问于 2013-04-04 23:37:06
回答 5查看 2.6K关注 0票数 19

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

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-04 23:54:36

从C++14开始,您可以将'用作digit group separator

代码语言:javascript
复制
auto one_m = 1'000'000;

以前的C++版本本身并不支持这一点。有两种主要的解决方法:

auto x= "1_000_000"_i;

(将这段代码写成constexpr会更麻烦,- but是完全可能的。)

允许以下代码的

自动x= NUM(1,000,000);

票数 14
EN

Stack Overflow用户

发布于 2013-04-04 23:38:33

目前没有办法做到这一点。然而,有一项建议是引入digit seperators (N3499)。他们还没有选择他们想要用作分隔符的字符。目前的建议是:

重音空间:4 815 162 342

  • Grave

  • 4'815'162'342

  • Underscore:4_815_162_342

不幸的是,它们都存在提案中描述的问题。

您可以通过使用用户定义的文字来采用hacky方法:

代码语言:javascript
复制
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;
}

这将打印出来:

代码语言:javascript
复制
4815162342

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

票数 10
EN

Stack Overflow用户

发布于 2013-04-05 05:33:19

代码语言:javascript
复制
int main()
{
   int x = 1e6;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15815646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档