货币格式C ++

时间:2015-11-29 02:37:44

标签: c++ string

因此,我正在尝试创建一个程序,该程序将从用户获取值并将其转换为货币格式(US:$)。我似乎几乎就在那里,我唯一的问题是,当我输入一个没有小数的值时,它不会用逗号格式化它。我怎样才能改变他的功能,无论是否有小数点,它都会格式化它。

void dollarFormat(string &currency)
{
    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
}

1 个答案:

答案 0 :(得分:3)

std::string::npos进行测试:

void dollarFormat(std::string &currency)
{
    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('.');