在C ++中对std :: get_money和s td :: put_money的困惑

问题描述 投票:6回答:1

我对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_moneystd::get_timestd::put_time也存在同样的困惑。

它的实际用途有哪些例子?

c++ iomanip
1个回答
1
投票

这是我不知道的标准库的一部分!根据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';
  }
}

不过,这对我来说似乎有点挑剔。该号码必须包含一个至少两位数的.$是可选的。

© www.soinside.com 2019 - 2024. All rights reserved.