std::num_get

来自cppreference.com
< cpp‎ | locale

定义于头文件 <locale>
template<

    class CharT,
    class InputIt = std::istreambuf_iterator<CharT>

> class num_get;
std::num_get封装类的规则解析类型的值的字符串表示形式boolunsigned shortunsigned intlongunsigned longlong longunsigned long longfloatdoublelong doublevoid*。标准格式输入操作(如cin >> n;)I / O流的语言环境中使用std::num_get方面来解析的文字表示的数字.
原文:
Class std::num_get encapsulates the rules for parsing string representations of values of type bool, unsigned short, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, and void*. The standard formatting input operators (such as cin >> n;) use the std::num_get facet of the I/O stream's locale to parse the text representations of the numbers.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
cpp/locale/locale/facetstd-num get-inheritance.svg
关于这幅图像

继承图

目录

[编辑] 类型要求

-
InputIt 必须满足 InputIterator 的要求。

[编辑] 专业化

两个专业,两个部分专业所提供的标准库和所有语言环境中创建的对象在C + +程序实现
原文:
Two specializations and two partial specializations are provided by the standard library and are implemented by all locale objects created in a C++ program:
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
定义于头文件 <locale>
std::num_get<char>
创建窄字符串解析数字
原文:
creates narrow string parsing of numbers
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
std::num_get<wchar_t>
创建广泛的数字字符串解析
原文:
creates wide string parsing of numbers
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
std::num_get<char, InputIt>
创建的窄字符串解析的数字使用自定义输入迭代器
原文:
creates narrow string parsing of numbers using custom input iterator
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
std::num_get<wchar_t, InputIt>
创建使用自定义输入迭代器的数字的的宽字符串解析的
原文:
creates wide string parsing of numbers using custom input iterator
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 会员类型

会员类型
原文:
Member type
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
Definition
char_type CharT
iter_type InputIt

[编辑] 成员函数

构造一个新num_get方面
原文:
constructs a new num_get facet
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数)
解构一个num_get方面
原文:
destructs a num_get facet
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(受保护成员函数)
调用do_get
原文:
invokes do_get
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数)

[编辑] 会员对象

static std::locale::id id
“ID”的语言环境
原文:
id of the locale
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员对象)

[编辑] 受保护的成员函数

[虚]
从输入流中解析了一些
原文:
parses a number from an input stream
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(虚受保护成员函数)

[编辑] 示例

#include <iostream>
#include <locale>
#include <string>
#include <sstream>
#include <iterator>
int main()
{
    std::string de_double = "1.234.567,89";
    std::string us_double = "1,234,567.89";
 
    // parse using streams
    std::istringstream de_in(de_double);
    de_in.imbue(std::locale("de_DE"));
    double f1;
    de_in >> f1;
 
    std::istringstream us_in(de_double);
    us_in.imbue(std::locale("en_US.UTF-8"));
    double f2;
    us_in >> f2;
 
    std::cout << "Parsing " << de_double << " as double gives " << std::fixed
              << f1 << " in de_DE locale and " << f2 << " in en_US\n";
 
    // use the facet directly
    std::istringstream s3(us_double);
    s3.imbue(std::locale("en_US.UTF-8"));
    auto& f = std::use_facet<std::num_get<char>>(s3.getloc());
    std::istreambuf_iterator<char> beg(s3), end;
    double f3;
    std::ios::iostate err;
    f.get(beg, end, s3, err, f3);
    std::cout << "parsing " << us_double
              << " as double using raw en_US facet gives " << f3 << '\n';
}

输出:

Parsing 1.234.567,89 as double gives 1234567.890000 in de_DE locale and 1.234000 in en_US
parsing 1,234,567.89 as double using raw en_US facet gives 1234567.890000

[编辑] 另请参阅

定义数字标点规则
原文:
defines numeric punctuation rules
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(类模板) [编辑]
格式数字输出的字符序列的值
原文:
formats numeric values for output as character sequence
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(类模板) [编辑]
抽取带格式的数据
(std::basic_istream 的公开成员函数) [编辑]