我有字符串
std::string MegaNum( float 10020030040 )
重要的是转换我的字符串,以便我们可以为每3位数字添加一个空格。我们如何将它们分组并不重要。
我想转换为4个值为1-3位的新值
float 1; /*with value 10*/
float 2; /*with value 020*/
float 3; /*with value 030*/
float 4; /*with value 040*/
然后将其打印为
10 020 030 040
答案 0 :(得分:0)
转换我的字符串,以便我们可以为每3位数字添加一个空格。
由于您是以字符串开头的,因此您可能会考虑直接执行契约(无浮动数学)。
以下函数接受一个字符串并从最低有效字符(最右边)计算3位数,并返回插入了空格的数字(行增长)。 (它不确认数字的有效性,不检查字符是否为数字)
std::string digiSpace3(std::string s)
{ // sSize must be signed int of sufficient size
int32_t sSize = static_cast<int32_t>(s.size());
if (sSize > 3)
for (int32_t indx = (sSize - 3); indx > 0; indx -= 3)
s.insert(static_cast<size_t>(indx), 1, ' ');
return(s);
}
用过:
std::string MegaNum = "10020030040" ;
// std::string MegaNum ( std::to_string(10020030040) ) ; //also works
std::cout << "\n " << digiSpace3(MegaNum) << std::endl;
并制作
10 020 030 040
fyi - 我的编译器不接受
std::string MegaNum( float 10020030040 );
和报告
error: expected ‘,’ or ‘...’ before numeric constant