c++ unicode转gbk注意事项,不实践,你永远不知道坑在哪里
unicode转gbk注意事项:
整 标记(){
静 正短 x0{0xfffe},x1{0xfeff};
取2();正短 a=c<<8|d;
如(a==x0)中 0;如(a==x1)中 1;中 2;
}//fffe为小头.feff为大头.要用正短
函数<正短()>读大头=[&](){//读两位,1位位读
取2();正短 p=c<<8|d;中 p;
};//fffe为小头,小头,小的在后,大的在前
//函数,要写全,类中不能直接一个动字.不得行
空 一位(){
符 e=(符)j;如(e=='\r')中;冲+=e;
}//去掉0d,要去掉0d,不然满屏的^M.
最重要的来了:
空 取2(){c=看();右();d=看();右();}
//这里的c和d必须是
c和d必须是 正 符否则成为阴阳脸.够你受的.
再一个注意:
整 d=型长(a)*2,m=15,n,k;串 b(d,'\0');
//上面串为d长是重点,这里必须是d长,不能为d+1长,否则,又是折腾人.
怎样发现上面的毛病呢?
因为老是多了一个^@,^@就是一个0的表示,代表,这里多了.
阴阳险,主要就是发现了前面的都是FF前缀.这时估计可能就是符搞成负的了.结果它乱搞,没得事就搞成FF..,FF..
又有一个你必须要知道的超级大坑,unicode文件,必须用二进制模式打开,否则打开不全.切记切记!
写一个程序,就会遇到无数个坑.简直成了坑神!
浙公网安备 33010602011771号