java - java和C++之间的字符串大小关系

标签 java c++ string

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

相关文章:

java - 对象不会在另一个类中的事件中显示在 JTable 中

javascript - 在 JavaScript 中 trim 文件名的最有效方法

string - 是否可以在不逐行缓存输入的情况下从 `io::stdin()` 读取字符?

c++ - 返回 *this 作为引用是否安全?

c++ - CUDA 在使用函数指针时将主机函数作为内核启动

c++ - 编译依赖于仅包含 .so 或 .a 文件的 boost 库的程序

python - 如何在Python中查找字符串列表中所有出现的字符串并返回int列表?

java - Spring 无版本 xsd 的 Intellij 错误 xsd 验证

java - 实现一个持续向邻居广播的简单 UDP 网络

java - 无法在 Android 中将 Open CV 垫从 native C++ 返回到 Java