因此,我正在尝试创建一个程序,该程序将从用户获取值并将其转换为货币格式(US:$)。我似乎几乎就在那里,我唯一的问题是,当我输入一个没有小数的值时,它不会用逗号格式化它。我怎样才能改变他的功能,无论是否有小数点,它都会格式化它。
void dollarFormat(string ¤cy)
{
int decimal;
decimal = currency.find('.'); // Find decimal point
if (decimal > 3) // Insert commas
{
for (int x = decimal - 3; x > 0; x -= 3)
currency.insert(x, ",");
}
currency.insert(0, "$"); // Insert dollar sign
}
答案 0 :(得分:3)
对std::string::npos
进行测试:
void dollarFormat(std::string ¤cy)
{
auto decimal = currency.find('.'); // find decimal point
if(decimal == std::string::npos) // no decimal point
decimal = currency.length();
if (decimal > 3) // Insert commas
{
for (auto x = decimal - 3; x > 0; x -= 3)
currency.insert(x, ",");
}
currency.insert(0, "$"); // Insert dollar sign
}
附注:为了使您的代码具有可移植性,请确保使用std::string::size_type
作为decimal
的类型而不是int
。或者,更好的是,使用auto
类型扣除:
auto decimal = currency.find('.');