编写适应性强的程序,比如程序运行在美国的电脑,操作习惯是美国人的,运行在欧洲电脑上,就是欧洲人的,这种问题,其实在更早,大约当时的15年前就已经有有效果的解决方法。就是环境变量。在C语言中要读取到一个环境变量的值,可以用中定义的函数getenv。其实,区域设置本质上也就是这个问题,将货币处理设置相应的环境变量,数字,字符等,都设置上相应的环境变量,按照需要,总共应该有将近二十个环境变量,一一设置好了,问题就得以解决。
区域设置是一个比环境变量方法更改进的方案。你只要设置到一个区域,里面整套的几十个环境变量就相应的改变了。不用一一设置,不容易出错。这些环境变量大致可以分为以下几类(见p84):
控制整理顺序(LC_COLLATE);
字符分类(LC_CTYPE);
货币格式(LC_MONETARY);
其它的数据格式(LC_NUMERIC);
时间(LC_TIME);
区域设置是一个比环境变量方法更改进的方案。你只要设置到一个区域,里面整套的几十个环境变量就相应的改变了。不用一一设置,不容易出错。这些环境变量大致可以分为以下几类(见p84):
控制整理顺序(LC_COLLATE);
字符分类(LC_CTYPE);
货币格式(LC_MONETARY);
其它的数据格式(LC_NUMERIC);
时间(LC_TIME);
LC_ALL
类型
struct lconv
关于区域设置的具体实现,各特征参数都记录在struct lconv结构体中
struct lconv
{
char *currency_symbol; //当前场所的地方货币符号
char *int_curr_symbol; //当前场所的国际货币符号
char *mon_decimal_point; //货币量的小数点
char *mon_grouping; //货币量每个数字组的尺寸
char *mon_thousands_sep; //货币量小数点左边的数字分组字符
char *negative_