Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 货币格式C++;_C++_String - Fatal编程技术网

C++ 货币格式C++;

C++ 货币格式C++;,c++,string,C++,String,因此,我试图创建一个程序,从用户那里获取一个值,并将其转换为货币格式(US:$)。我似乎快到了,唯一的问题是当我输入一个没有小数的值时,它不会用逗号格式化。我怎样才能更改他的函数,使其无论是否有小数点都能格式化 void dollarFormat(string &currency) { int decimal; decimal = currency.find('.'); // Find decimal point if (decimal > 3) // In

因此,我试图创建一个程序,从用户那里获取一个值,并将其转换为货币格式(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
}
对以下各项进行测试:

旁注:要使代码可移植,请确保使用的是
decimal
类型,而不是
int
。或者,更好的方法是使用
auto
类型推断:

auto decimal = currency.find('.');

我的教授一直声称使用“auto”关键字是一种渎职行为,应该避免使用?@ElSpiffy NO NO,再次否定。这是一个强烈建议使用
auto
的例子。这并不完全是渎职。询问她/他如何将lambda分配给变量,
auto l=[](){std::cout好吧,对于这部分代码,我不会更改它,但每当我有另一个类时,我都会记住它。这位教授也非常反对使用std::方法。这就是为什么我在代码顶部使用名称空间std;。我如何将std::string::npos更改为我的教授可以接受的格式。@ElSpiffy我建议您切换t由于名称冲突、ADL问题和现实世界代码中的许多其他问题,通常不建议将课程交给不同的讲师;)
使用名称空间std;
。关于
std::string::npos
,只需使用
string::npos
(如果您已经在
使用名称空间std;
)。是否可以使此函数接受字符串数组?
auto decimal = currency.find('.');