如何使用逗号格式化字符串,如US currency

How to format a string with commas like US currency?

本文关键字:US currency 字符串 格式化 何使用      更新时间:2023-10-16

我正在尝试制作一个小程序,该程序需要一个字符串,然后以三个字符间隔向其添加逗号,就像如何格式化货币金额一样。(即1000变成1000,10000变成10000)。

这是我到目前为止的尝试,它几乎工作:

 #include <string>
 #include <iostream>
 using namespace std;
 int main() {
  string a = "123456789ab";
  int b = a.length();
  string pos;
  int i;
  for (i = b - 3; i >= 0; i-=3) {
    if (i > 0) {
      pos = "," + a.substr(i,3) + pos;
    }
  }
  cout << pos;
  return 0;
 } 

带有示例字符串的输出是:

,345,678,9ab

它似乎不想抓取前1到3个字符。我的代码做错了什么?

#include <string>
 #include <iostream>
 using namespace std;
 int main() {
  string a = "123456789ab";
  int b = a.length();
  string pos;
  int i;
  for (i = b - 3; i > 0; i-=3) {
    if (i > 0) {
      pos = "," + a.substr(i,3) + pos;
    }
  }
  cout << a.substr(0,i+3)+pos;
  return 0;
 }

当指数为负时,表示不能再生成3个组。但可能还剩下1-3个数字。我们需要显式地添加

第一个字符在索引0处。但是当i为0时,你永远不会调用substr,所以你永远无法得到那个字符。