【问题标题】:Langinfo.h in Visual Studio 2010Visual Studio 2010 中的 Langinfo.h
【发布时间】:2012-07-22 17:27:13
【问题描述】:

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

【问题讨论】:

    标签: c windows visual-studio localization locale


    【解决方案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

    【讨论】:

      【解决方案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 function
      LOCALE_IFIRSTDAYOFWEEK

      【讨论】:

        猜你喜欢
        • 2018-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-26
        • 1970-01-01
        相关资源
        最近更新 更多