我对std::get_money
头文件中定义的C ++函数<iomanip>
感到困惑。根据编程概念,get_money
的用途是什么?
我使用std::get_money
使用以下代码。
#include <iostream> // std::cin, std::cout
#include <iomanip> // std::get_money
int main ()
{
long double price;
std::cout << "Please, enter the price: ";
std::cin >> std::get_money(price);
if (std::cin.fail()) std::cout << "Error reading price\n";
else std::cout << "The price entered is: " << price << '\n';
return 0;
}
当我输入100.25时,它返回100。输出和货币格式之间是什么关系?我阅读了this参考,但无法理解该关系。 std::put_money
,std::get_time
和std::put_time
存在相同的困惑。
实际使用的例子有哪些?
答案 0 :(得分:1)
这是我不知道存在的标准库的一部分!根据{{3}},您必须设置区域设置以定义应如何格式化时间和金钱。在这里,我使用的是en_US语言环境。
#include <iomanip>
#include <iostream>
int main() {
long double price;
std::cin.imbue(std::locale("en_US.UTF-8"));
std::cout << "Please enter the price: ";
std::cin >> std::get_money(price);
if (std::cin.fail()) {
std::cout << "Error reading price\n";
} else {
std::cout << "The price entered is: " << price << '\n';
}
}
不过,这对我来说似乎有点挑剔。该数字必须包含一个.
,后跟至少两位数字。 $
是可选的。