我正在开发基于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
。