2013-06-01 8 views
0

Я использую vswprintf для формирования wchar_t * str из форматированной строки. В этой форматированной строке для печати строки std: Mac принимает в качестве% s, а Windows VS2008 принимает в качестве% S. Примерvswprintf: Mac% s vs Windows% 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 

Почему это различие в поведении? Есть ли способ распечатать std :: string/char * в vswprintf в независимой от платформы форме?

ответ

0

% hs - независимый от платформы способ печати символа [] как в Win, так и в Mac