setlocale的使用

 

setlocale

char * setlocale ( int category, const char * locale );

Set or retrieve locale

Sets locale information to be used by the current program, either changing the entire locale or parts of it. The function can also be used to retrieve the current locale's name by passing NULL as the value for locale.

Locales contain information on how to interpret and perform certain input/output and transformation operations taking into consideration location and language specific settings.

Most running environments have certain locale information set according to the user preferences or localization. But, independently of this system locale, on start, all C programs have the "C" locale set, which is a rather neutral locale with minimal locale information that allows the result of programs to be predictable. In order to use the default locale set in the environment, this function can be called with "" as the locale parameter.

The locale set on start is the same as setlocale(LC_ALL,"C") would set.
The entire default locale can be set by calling setlocale(LC_ALL,"");
The parts of the current locale affected by a call to this function are specified by parameter category.

Parameters

category
Part of the locale affected. It is one of the following constant values defined as macros in < clocale>:
namePart affected
LC_ALLThe entire locale.
LC_COLLATEAffects the behavior of strcoll andstrxfrm.
LC_CTYPEAffects character handling functions (all functions of <cctype>, exceptisdigit and isxdigit), and the multibyte and wide character functions
LC_MONETARYAffects monetary formatting information returned by localeconv.
LC_NUMERICAffects the decimal-point character in formatted input/output operations and string formatting functions, as well as non-monetary information returned bylocaleconv.
LC_TIMEAffects the behavior of strftime.
locale
C string containing the name of a C locale. These are system specific, but at least the two following locales must exist:
locale namedescription
"C"Minimal "C" locale
""Environment's default locale
If the value of this parameter is NULL, the function does not make any change to the current locale, but the name of the current locale is returned by the function.

Return Value

On success, A pointer to a C string identifying the locale currently set for the category. If category is LC_ALL and different parts of the locale are set to different values, the string returned gives this information in a format which may vary between compiler implementations.

If the function failed to set a new locale, this is not modified and a null pointer is returned.

Example

/* setlocale example */
#include <stdio.h>
#include <time.h>
#include <locale.h>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;
  char buffer [80];

  struct lconv * lc;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );

  int twice=0;

  do {
    printf ("Locale is: %s\n", setlocale(LC_ALL,NULL) );

    strftime (buffer,80,"%c",timeinfo);
    printf ("Date is: %s\n",buffer);

    lc = localeconv ();
    printf ("Currency symbol is: %s\n-\n",lc->currency_symbol);

    setlocale (LC_ALL,"");
  } while (!twice++);
  
  return 0;
}


One of the possible outputs when the previous code is run is:

Locale is: C
Date is: 01/15/07 13:33:47
Currecy symbol is: 
-
Locale is: English_United States.1252
Date is: 1/15/07 1:33:47 PM
Currency symbol is: $
-

另参考: http://www.cnblogs.com/hnrainll/archive/2011/05/07/2039700.html
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值