2

Visual Studio2010Cプロジェクトlanginfo.hに含めるにはどうすればよいですか。試しまし #include <langinfo.h>たが、VS2010環境にはそのようなヘッダーファイルがないようです。ロケールの開始平日を取得する必要がありますが、現在はこのライブラリのみを使用しています。したがって、問題は私の問題を解決する方法です。つまり、langinfo.hを含める方法、または平日から現在のロケールを取得する方法です。

4

2 に答える 2

0

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を参照してください。

于 2013-07-16T10:22:58.993 に答える
0

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

于 2019-06-18T13:49:25.580 に答える