如何将字符串拆分为3个字符的组,并在它们之间留出空格

时间:2018-05-05 00:07:39

标签: c++

我有字符串

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

1 个答案:

答案 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