如何使用逗号格式化字符串,如US currency
How to format a string with commas like US currency?
我正在尝试制作一个小程序,该程序需要一个字符串,然后以三个字符间隔向其添加逗号,就像如何格式化货币金额一样。(即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
,所以你永远无法得到那个字符。