我正在使用vswprintf从格式化的字符串中形成wchar_t * str。在该格式化字符串中,要打印std:字符串,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 *?
答案 0 :(得分:0)
%hs是在Win和Mac中打印char []的独立于平台的方式