我正在开发基于 Java 构建的某个应用程序。 java 层与 C++ 层对话,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
.
关于java - java和C++之间的字符串大小关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10477888/