C Programer  - 讨论区

标题:问题:关于使用locale.h显示带分隔号的数字

2012年09月21日 星期五 09:10

我需要将整数型数字以带分隔号的形式输出。

比如,23848234234需要输出成23,848,234,234。这样一眼就能看出是23G左右。

我就在谷歌和百度上找"C语言 数字加逗号",自然有人用C语言重写一个这样的函数。

#include "stdio.h"
void main()
{
    int i;
    int a=1234567;
    int b[9];
    for(i=0;a != 0;i++)
    {
        b[i] = a %1000;
        a /= 1000;
    }
    i--;
    for(;i>=0;i--)
    {
        printf("%d,",b[i]);
    }
}

但是有人说可以用locale.h通过简单的配置来实现。

然后给出了这样的文字:

<locale.h>

//setlocale("LC_NUMERIC", ...)


struct lconv * localeconv(void);

char *decumal_point = ".";
char * thousands_sep = ","
char * grouping = "\3"

于是,我在网上查找了所有关于locale.h的用法,还是没有实现。

大家可以帮助我一下吗?

2012年09月21日 星期五 09:57

只找到了C++的:

#include <iostream>
#include <string>
#include <locale>
using namespace std;

class thousands_sep_facet:public std::numpunct<char>
{
public:
    explicit thousands_sep_facet( size_t r=0 ) : std::numpunct<char>(r)
    {
    }
protected:
    string do_grouping() const
    {
        return "\003";
    }
};

int main( void )
{
    cout << 1389992 << endl; // 1389992

    locale loc( locale(), new thousands_sep_facet );
    std::cout.imbue( loc );
    cout << 1389992 << endl; // 1,389,992

    return 0;
}

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2022

    京ICP备05028076号