c++ - C++ 中对 std::get_money 和 std::put_money 的混淆
问题描述
我对头文件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。输出和货币格式之间的关系是什么?我阅读了此参考资料,但无法理解其中的关系。std::put_money
,std::get_time
和也存在同样的混淆std::put_time
。
有哪些实际使用的例子?
解决方案
这是我不知道存在的标准库的一部分!根据cppreference,您必须设置语言环境来定义时间和金钱的格式。这里我使用的是 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';
}
}
不过,这对我来说似乎有点挑剔。该数字必须包含一个.
至少有两位数字的 a。$
是可选的。
推荐阅读
- apache-spark - var hFile = sc.textFile("hdfs://localhost:9000/ex1/cen.csv") 输入路径不存在错误
- html - 网格项目溢出网格外
- html - 图片没有显示在我的网页上(我现在只使用 html)
- python - 捕获自定义“间接”异常的好方法
- javascript - 如何自动化轮播幻灯片
- lua - Freeswitch 会议 LUA
- fabricjs - 来自用户选择的 Fabric.js 动态 Rect clipPath
- java - 有没有一种简单的方法来获取用于在黄瓜中创建通用方法的页面对象?
- mysql - 在一个查询中计算多个月
- python - Gensim以txt格式保存词向量错误