wstring自定义printf问题
下面是一个宽字节的格式化输出函数,要在gcc下用,有两个函数是vc
下的,我找了一下资料还是不会,请大家帮忙看看,谢谢!
- C/C++ code
wstring myprintf(const wchar_t* format, ...) { std::wstring mWBuffer; va_list ArgPtr; va_start(ArgPtr, format); std::size_t Length = _vscwprintf(format, ArgPtr) + 1;//gcc没有 mWBuffer.resize(Length); vswprintf_s(&mWBuffer[0], Length, format,ArgPtr);//gcc没有 va_end(ArgPtr); return mWBuffer; }
[解决办法]
bsd的源文件,gcc也差不多:
http://www.oschina.net/code/explore/freebsd/include/wchar.h
里面有vswprintf功能相同可以使用
vswprintf_s是微软的安全函数就是vswprintf加了安全检查,不符合强行报错,可以用vswprintf替代
[解决办法]
_wsetlocale(LC_ALL,L"chs");//能在控制台输出unicode中文
wprintf(L"name=%s,score=%d \n",name,score);
你在gcc中测试下能用否?