0

vswprintf を使用して、書式設定された文字列から wchar_t* str を形成しています。そのフォーマットされた文字列では、std:string を出力するために、Mac は %s として受け入れますが、Windows VS2008 は %S として受け入れます。例

void widePrint(const wchar_t* fmt, ...) { 
    va_list args;
    va_start(args, fmt);

    wchar_t buf[32*1024] = {0};

    vswprintf(buf,(32*1024 - 1),fmt, args);

    ...//Prints buf 
    ...
}
...
std::string str = "normal String";
std::wstring strW = L"wideStr";
widePrint(L"str: %S wStr: %ls",str.c_str(), strW.c_str()); //Windows - VS2008
widePrint(L"str: %s wStr: %ls",str.c_str(), strW.c_str()); //Mac - XCode 3.2.6

この行動の違いはなぜですか?プラットフォームに依存しない形式で vswprintf の std::string/char* を印刷する方法はありますか?

4

1 に答える 1

0

%hs は、Win と Mac の両方で char[] を印刷するプラットフォームに依存しない方法です

于 2013-06-03T05:43:54.403 に答える