• 3899阅读
  • 4回复

[提问]QString的内部结构是怎么样的? [复制链接]

上一主题 下一主题
离线stlcours
 

只看楼主 倒序阅读 楼主  发表于: 2014-12-22
我想知道QString的内部结构,因为希望和另一个Delphi语言的DLL进行交互。刚巧Delphi的String内部结构是 头+内容,而且它的头是负方向的,正方向才开始真正存储内容,已经尽大可能的与C++兼容了,因为C++ Builder也是使用这个结构(相当于char*)。而QString多半也是如此,如果两者一致就可以直接使用了,但事实上不行。也许是两者的头有所不一致吧,不知道QString的头是正方向存储还是负方向,头的结构是怎样组成的。

希望有人能讲讲QString的内部结构。我也粗看了一下qstring.cpp,但是没太看懂。


离线dbzhang800

只看该作者 1楼 发表于: 2014-12-22
不了解 Delphi,但我确信,你的Delphi的DLL和Qt交互不会涉及到 QString的内部结构。


QString 内部就是 UTF16字符串,你与外界交互。首先要确定接口是如何的, char * /wchar_t* /ushort * 还是其他。   char * 的话,你需要规定使用的何种字符集, UTF8/UTF16-be/UTF16-le/GB18030/BIG5/...
离线stlcours

只看该作者 2楼 发表于: 2014-12-23
Delphi也是UTF16。我已经成功使用char* 与Delphi交换数据了,包括中文数据,不过不过瘾,我希望能够使用QString直接交换数据,还是有可能的。只是我是新手,不清楚QString的内部构造。
离线dbzhang800

只看该作者 3楼 发表于: 2014-12-23
回 stlcours 的帖子
stlcours:Delphi也是UTF16。我已经成功使用char* 与Delphi交换数据了,包括中文数据,不过不过瘾,我希望能够使用QString直接交换数据,还是有可能的。只是我是新手,不清楚QString的内部构造。
 (2014-12-23 01:34) 

这样的话,那你自己去研究自己所用Qt附带的源码吧。毕竟这属于Qt内部实现,在不同的Qt版本中,随时都可能发生变化。
离线圣域天子

只看该作者 4楼 发表于: 2014-12-23
一般来说想异构语言交互,你应该把文字转换成UTF8格式的char*进行互通,就象网络信息传输一样,而不需要去关心不同语言的内部是什么结构。
快速回复
限100 字节
 
上一个 下一个