Langinfo.h在Visual Studio 2010(Langinfo.h in Visual

2019-09-20 00:25发布

我怎样才能到包括我的Visual Studio 2010的C-项目langinfo.h。 我试过#include <langinfo.h>但似乎没有在VS 2010环境没有这样的头文件。 我需要得到该区域的起始工作日,但我现在只能方式使用这个库。 所以,问题是怎么解决我的问题:如何将langinfo.h,或如何得到当前的locale开始工作日。

Answer 1:

我想,你应该使用GetLocaleInfoEx()函数。 例如,为了获得一个星期这些电话可能被使用的开始日期:

# if defined(_WIN32_WINNT_VISTA) && WINVER >= _WIN32_WINNT_VISTA && defined(LOCALE_NAME_USER_DEFAULT)
    GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT, LOCALE_IFIRSTDAYOFWEEK, wsDay, 4)
# else
    GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IFIRSTDAYOFWEEK, wsDay, 4)
# endif

有关该功能的更多信息,可以发现http://msdn.microsoft.com/en-us/library/dd318103%28v=vs.85%29.aspx



Answer 2:

下面是一个小例子程序first_weekday.c ,它得到了一周的第一天。 此外,价值和使用的变量的大小被打印。
GetLocalInfoEx()存储一周的变量中的第一天week_1stday
然而,在Windows上,我们有: 0:Monday, ... 6:Sunday (见: LOCALE_IFIRSTDAYOFWEEK )。
因此,计算包括在这里,为了得到0:Sunday, 1:Monday, ...
一周的第一天的数量存储然后first_weekday

#include <stdio.h>
#include <windows.h>

int main(
    )
{
    int       ret;
    int       first_weekday;
    DWORD     week_1stday;

    ret = GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT,
                          LOCALE_IFIRSTDAYOFWEEK | LOCALE_RETURN_NUMBER,
                          (LPWSTR) & week_1stday,
                          sizeof(week_1stday) / sizeof(WCHAR));
    /* 0:Monday, ..., 6:Sunday. */
    /* We need 1 for Monday, 0 for Sunday. */
    first_weekday = (week_1stday + 1) % 7;
    printf("ret = %d\n", ret);
    printf("sizeof(ret) = %Iu\n", sizeof(ret));
    printf("sizeof(week_1stday) = %Iu\n", sizeof(week_1stday));
    printf("sizeof(WCHAR) = %Iu\n", sizeof(WCHAR));
    printf("week_1stday = %lu\n", week_1stday);
    printf("first_weekday = %d\n", first_weekday);
    return 0;
}

也可以看看:
GetLocaleInfoEx功能
LOCALE_IFIRSTDAYOFWEEK



文章来源: Langinfo.h in Visual Studio 2010