Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.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++ 如何设置cout区域设置以插入逗号作为分隔符?_C++_Formatting_Numbers_Number Formatting - Fatal编程技术网

C++ 如何设置cout区域设置以插入逗号作为分隔符?

C++ 如何设置cout区域设置以插入逗号作为分隔符?,c++,formatting,numbers,number-formatting,C++,Formatting,Numbers,Number Formatting,给定以下代码: cout << 1000; 这可以使用std::locale和cout.imbue()函数来完成,但我担心我可能在这里遗漏了一个步骤。你能认出它吗?我目前正在复制当前区域设置,并添加了一个数千分隔符方面,但逗号从未出现在我的输出中 template<typename T> class ThousandsSeparator : public numpunct<T> { public: ThousandsSeparator(T Separ

给定以下代码:

cout << 1000;
这可以使用std::locale和cout.imbue()函数来完成,但我担心我可能在这里遗漏了一个步骤。你能认出它吗?我目前正在复制当前区域设置,并添加了一个数千分隔符方面,但逗号从未出现在我的输出中

template<typename T> class ThousandsSeparator : public numpunct<T> {
public:
    ThousandsSeparator(T Separator) : m_Separator(Separator) {}

protected:
    T do_thousands_sep() const  {
        return m_Separator;
    }

private:
    T m_Separator;
}

main() {
    cout.imbue(locale(cout.getloc(), new ThousandsSeparator<char>(',')));
    cout << 1000;
}
模板类千分位分隔符:public numpunt{
公众:
千位分隔符(T分隔符):m_分隔符(分隔符){}
受保护的:
千禧年九月{
返回m_分离器;
}
私人:
T m_分离器;
}
main(){
cout.imbue(locale(cout.getloc(),new-ThousandsSeparator(','));

cout默认的
do\u-sep
实现已经返回了
,“
。看起来您应该替代
do\u-grouping
do\u-grouping
默认返回一个空字符串,这意味着没有分组。这意味着每个组有三个数字:

string do_grouping() const
{
    return "\03";
}

您是否尝试过编译您希望我们相信您正在使用的确切代码?是否存在memleak的可能副本?“\03”代表什么?ASCII代表“文本结尾”?如果是,原因是什么?@Cory:do\u grouping返回一个字符串,该字符串被视为表示组大小的一个字符数数组。“\03”创建一个字符串,该字符串有一个且只有一个数字值为3的字符,这意味着每个组将有3位数字。默认值不是“,”。C本地不使用分组,否则它是本地特定的。@Martin:我说的是默认返回的形式do_数千_sep,即“,”。它与“默认语言环境”不同。“返回:用作数字组分隔符的字符。所需的专门化返回”“或L”“。”
string do_grouping() const
{
    return "\03";
}