Tag: 语言环境

Visual Studio 2010中的Langinfo.h

如何将我的Visual Studio 2010 C项目包含在langinfo.h中。 我试过#include ,但似乎VS 2010环境中没有这样的头文件。 我需要获取语言环境的开始工作日,但我现在只使用这个库。 所以,问题是如何解决我的问题:如何包含langinfo.h,或如何从工作日开始获取当前的语言环境。

为什么nl_langinfo(CODESET)与locale charmap不同?

这篇文章起源于你如何得到你的系统在c / c ++中使用什么样的编码? 我试过用 nl_langinfo(CODESET) 但我得到ANSI_X3.4-1968而不是UTF-8(这是我在输入时得到的:locale charmap)。 我使用nl_langinfo()错了吗? 我该怎么用?

如何在C / C ++中获取系统语言?

如何在C / C ++中获取系统语言? 像en_US或en_GB。

与区域设置无关的strtod实现

我有一个库,需要解析双数字,总是使用一个点’。’ 作为小数分隔符。 不幸的是,对于这种情况,strtod()尊重可能使用不同分隔符的语言环境,因此解析可能会失败。 我不能setlocale() – 它不是线程安全的。 所以我现在正在寻找一个干净的与语言环境无关的strtod实现。 到目前为止,我已经找到了多个实现,但是所有这些实现看起来都很糟糕,或者就像坏代码一样。 有人可以为我推荐经过充分测试,工作,干净(ANSI)C的实现吗?

描述语言环境的’struct lconv’中的值的forms和实际约束是什么?

背景 C99标准的第7.11节描述了标头及其内容。 特别是,它定义了struct lconv并说: […]在“C”语言环境中,成员应具有注释中指定的值。 char *decimal_point; // “.” char *thousands_sep; // “” char *grouping; // “” char *mon_decimal_point; // “” char *mon_thousands_sep; // “” char *mon_grouping; // “” char *positive_sign; // “” char *negative_sign; // “” char *currency_symbol; // “” char frac_digits; // CHAR_MAX char p_cs_precedes; // CHAR_MAX char n_cs_precedes; // CHAR_MAX char p_sep_by_space; […]

如何获取我的环境的当前区域设置?

曾尝试在Linux中使用以下代码,但始终在不同的LANG设置下返回“C”。 #include #include #include using namespace std; int main() { cout<<"locale 1: "<<setlocale(LC_ALL, NULL)<<endl; cout<<"locale 2: "<<setlocale(LC_CTYPE, NULL)<<endl; locale l; cout<<"locale 3: "<<l.name()<<endl; } $ ./a.out locale 1: C locale 2: C locale 3: C $ $ export LANG=zh_CN.UTF-8 $ ./a.out locale 1: C locale 2: C locale 3: C 我该怎么做才能在Linux中获得当前的语言环境设置(比如Ubuntu)? 另一个问题是,在Windows中获取区域设置是否相同?

Can isdigit合法地是依赖于C的语言环境

在涉及setlocale的部分中,ANSI C标准在脚注中指出,其行为不受当前语言环境影响的唯一ctype.h函数是isdigit和isxdigit。 isdigit的Microsoft实现依赖于语言环境,因为,例如,在使用代码页1250的语言环境中,isdigit仅对0x30(’0’) – 0x39(’9’)范围内的字符返回非零值,而在使用代码页的语言环境中对于上标数字0xB2(’²’),0xB3(’³’)和0xB9(’¹’),1252 isdigit也返回非零值。 Microsoft是否依赖于isdigit语言环境而违反了C标准? 在这个问题中,我主要对C90感兴趣,C90是微软声称要遵守的,而不是C99。 附加背景: Microsoft自己的setlocale文档错误地指出isdigit不受语言环境的LC_CTYPE部分的影响。 涵盖ctype.h函数的C标准部分包含一些我认为含糊不清的措辞: 这些函数的行为受当前语言环境的影响。 下面列出了仅当不在“C”语言环境中时具有语言环境特定方面的那些函数。 我认为这是模棱两可的,因为不清楚它是什么试图说的isdigit这样的函数没有关于特定于语言环境的方面的注释。 它可能试图说这些函数必须假定依赖于语言环境,在这种情况下,Microsoft的isdigit实现就可以了。 (除了我前面提到的脚注似乎与这种解释相矛盾。)