我正在尝试制作一个带有字符串的小程序,然后以三个字符间隔为其添加逗号,例如如何格式化货币金额。 (即1000变为1,000,10000变为10,000)。
到目前为止,这是我的尝试,它几乎可以运作:
#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个字符。我的代码怎么办?
答案 0 :(得分:0)
第一个字符位于索引0.但是当substr
为0时,您永远不会调用i
,因此您永远无法获得该字符。
答案 1 :(得分:0)
#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个数字可能会被留下。我们需要明确添加它们