Symbian c++ API读取文件的字符串问题?
我有个二进制文件,在symbian平台上读取这个文件,文件里面有unicode字符的中文字符串,通过什么方法读取啊?我试过用readstream读取,但读出来的是二进制...求高手指点...
[解决办法]
好象有个RFileReadStream::ReadTUint16
[解决办法]
unicode标准编码是2字节代表一个字符,而symbian的RFile读的是8位的,所以读取出来我们需要做一些处理,我写了一段代码,是读取unicode编码方式的,可供楼主参考一下:
RFile file;
TInt err = file.Open(CEikonEnv::Static()->FsSession(),_L("C:\\test.txt"),EFileRead| EFileWrite | EFileStreamText);
if (err == KErrNone)
{
TInt size;
file.Size(size);
HBufC8* text = HBufC8::NewL(size);
TPtr8 ptr = text->Des();
file.Read(ptr);
HBufC* unicode = HBufC::NewL(size/2);
const TUint8* str = text->Ptr();
for(TInt i=0; i<size; i++)
{
TUint16 ch1 = *(str+i);
TUint16 ch2 = *(str+i+1);
TUint16 ch = (ch2<<8)+ch1;
//FF、FE表示文件为unicode编码
if( ch1!=0xFF && ch2 != 0xFE)unicode->Des().Append(&ch,1);
i++;
}
delete text;
iLabel1->SetTextL(unicode->Right(10));
delete unicode;
file.Close();
}
[解决办法]
另外楼主可以考虑使用TFileText,TFileText可以读取16位的文件,不过TFileText得缺陷是每次read一行