2013-06-01 57 views
0

我正在使用vswprintf從格式化的字符串形成wchar_t * str。在格式化的字符串中,要打印std:字符串,Mac在Windows VS2008接受爲%S時接受爲%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 

爲什麼這種行爲差異?有沒有什麼辦法可以在平臺無關的形式下在vswprintf中打印std :: string/char *?

回答

0

%hs是Win和Mac打印char []的平臺獨立方式

相關問題