宽字符支持(linux,MinGW,Qt)
1。要使用宽字符支持,使用w开头的一系列东西,如wstring,wofstream等。在使用wstring的时候,常量字符串前面要加上L,这样才能转换成wchar_t型的
else if(fileName.substr(fileName.rfind(L"."))==L".prj")
2。一个文件流(无论是ofstream还是wofstream),只支持const char*作为文件名,对于宽字符的wstring的文件名,该做一些处理。
DTchar mbsFileName[512];
DTint mbsSize=std::wcstombs(mbsFileName,m_dumpFileName.c_str(),m_dumpFileName.size()*sizeof(wchar_t));
mbsFileName[mbsSize]=0;
m_pDumpStream=new std::fstream(mbsFileName,std::ios::out|std::ios::binary);
上面的代码要注意的是,wcstombs转换后的char序列并没有0字符串结尾符,所以拿出去直接当字符串使用会出错。
或者“You can use wcstombs() to narrow the filename or if you're feeling adventurous, the narrow() member function of the ctype facet of a std::locale.”
见http://www.gamedev.net/community/forums/topic.asp?topic_id=358254&whichpage=1?
3。MinGW不支持wchar_t,好像是因为linux下的wchar_t是4字节的,而windows下vc运行时的wchar_t是2字节的。
见Qt中qstring.cpp中的一段doxygen注释
#ifndef QT_NO_STL
/*! fn QString QString::fromStdWString(const std::wstring &str)
Returns a copy of a str. a str is assumed to be encoded in
utf16 if the size of wchar_t is 2 bytes (e.g. on windows) and ucs4
if the size of wchar_t is 4 bytes (most Unix systems).
This constructor is only available if Qt is configured with STL
compabitility enabled.
sa fromUtf16(), fromLatin1(), fromLocal8Bit(), fromUtf8()
*/
见MinGW的官方声明:http://www.mingw.org/MinGWiki/index.php/wide%20characters
其中还有2个连接。
另外:一个hp的家伙hack的方法:
http://lists.zerezo.com/mingw-users/msg00753.html
很复杂,我又不懂,唉。。。。绝望。
在linux下的支持宽字符的,没法在windows下移植了。。。。。。。。。。
4.MinGW下的Qt是支持宽字符的,我还测试了一下,如果文件路径中含有“桌面”二字,我的非宽字符支持的程序会r
相关文档:
from:http://blog.chinaunix.net/u2/62281/showart_1096746.html
sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket
1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包
2.socket(PF_PACK ......
-------------------------------------------------------------------------------------------------------
//By:yuyongbao
//QQ:673360056
Linux下用Busy Box制作Ramdisk全过程
1 建立根文件系统结构
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin tmp usr var
#chmod 1777 tmp
#mk ......
[转]Linux定时器
核主要需要两种类型的时间:
1.
在内核运行期间持续记录当前的时间与日期,以便内核对某些对象和事件作时间标记(
timestamp
,也称为
“
时间戳
”
),或供用
户通过时间
syscall ......
aishen944-163.com
转贴请注明出处,谢谢!!
其实透明贴图的原理就是进行xor运算,
基本公式:A xor A = 0 A xor 0 = A A xor A xor B = B
假如现在有两张图片,一张是我们要对其进行贴图的图片A, 另外一张是要被贴图的图片B
1, 复制图片B的一份拷贝为C
2, 将C中指定 ......