我正在开发基于Java的某个应用程序。 Java层与C++层进行通信,后者执行从数据库中形成sql查询的逻辑,并将结果返回给Java层。

用一个简单的例子:

在Java方面

nameField = new JTextField(20) //20 chars max length
name = t.getText() // name is sent to CPP layer

在CPP层上,将接收来自Java层的名称并将其存储在本地变量cppName中。我对CPP层中使用的变量的声明感到困惑。其中大多数被声明为:
char cppName[20*4+1]

我想在这里知道20 * 4 + 1的重要性。在cpp端将所有变量声明为javaSize * 4 + 1的原因。

最佳答案

Java代码UNICODE中的字符是吗?如果是这样,那么一个char不足以存储UNICODE字符,比率为4:1。最后一个字符(+1)是空终止符。

因此,在C++端需要4个字节(即4个char)来存储一个Java字符,并且C++中以char表示的字符串以空值终止(最后一个字符必须为'\0'),因此20*4+1

07-25 21:46
查看更多