我再次与Symbians Descriptors争吵......
char fileName[128] = "somethingsomething";
接下来我有一个TEntry对象,它有一个成员iName。对此iName 我想分配我的fileName。我尝试按如下方式进行:
TEntry anEntry;
anEntry.iName.Copy((TText8* )rEntity->fileName);
-
no instance of overloaded function " TBufC::Copy [with S=256]" matches the argument list
argument types are: (TText8 *)
object type is: TBufC<256>
anEntry.iName.Copy((TText8* )rEntity->fileName);
我是否需要使用其他功能将文件名复制到entry.iname?
非常感谢
答案 0 :(得分:1)
TBufC是不可修改的(C代表“常数”)。它没有任何复制功能。
尝试类似:
iName.Des().Copy(TPtrC8((TText8*)fileName));
或
TBuf<256> tmp; // or HBuf if you're worried about using so much stack
tmp.Copy(TPtrC8((TText8*)filename));
iName = tmp;
如果您无法更改iName的类型,也许您可以将fileName更改为存储在描述符中而不仅仅是char数组?正如你所发现的,混合这两者是痛苦的。
这都假设你的8位字符是ascii或ISO-latin,而不是UTF-8。如果是后者,您还需要转换字符编码。
答案 1 :(得分:0)
将const char []
中的零终止TPtrC
数据换行,使其成为可以传递给Copy
的描述符。但是,TEntry::iName
是常量TBufC
,但您可以在其上调用Des
以获得可修改的TPtr
:
anEntry.iName.Des().Copy(TPtrC8((TText8 *)rEntity->fileName));