Stdstring vswprintf:Mac%s与Windows%s

Stdstring vswprintf:Mac%s与Windows%s,stdstring,wchar-t,printf,Stdstring,Wchar T,Printf,我正在使用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,

我正在使用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*?

%hs是在Win和Mac中打印char[]的独立于平台的方法