java - 将 C 或 C++ 常量转换为 Java

标签 java c++ c

我有以下 C 或 C++ 常量:

static const char *selstr2 = "oooo"
                             "oC o"
                             "o  o"
                             "oooo";

现在我不明白在 Java 中与此类似的是什么。它是 Java String 还是 String[]?

最佳答案

首先,请注意,在这种情况下,您的 C 风格字符串在取消混淆多行表示和连续 "" 的串联行为时是等效的。在这种情况下,

static const char *selstr2 = "oooooC oo  ooooo";

selstr2是指向 char[17] 的指针C 中的文字和 const char[17] C++ 中的字面量衰减const char*指针类型。注意这里 C 和 C++ 的重要区别:虽然类型不是 const在 C 中,您仍然无法修改内容。

您可能会认为这等同于 java.lang.String .但它不在两个重点上:(1) Java 字符串更宽;它们由 Java char 组成类型,它们是 16 位无符号类型。并且 (2) NUL 终止符未指定、隐含,甚至可能不存在。

因此我会说 java.lang.String更接近于 C++ std::basic_string<std::uint16_t>使用 UTF-16 编码,并且 C 风格的字符串在许多方面最接近 Java 中的字节数组,只是在末尾多了一个 0。

说了这么多,你可能会发现

static final java.lang.String selstr2 = "oooooC oo  ooooo";

将符合目的,除非您打算在两种语言之间进行互操作。

关于java - 将 C 或 C++ 常量转换为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48943433/

相关文章:

c - 将指针的地址存储到内存中

java - Gradle 。不知道自己是子项目的子项目

java - 为什么 Netbeans 提示同步调用被条件包裹?

python - 将 floodfill open cv 从 C++ 转换为 Python

c++ - 在 C++ 中使用线程调用具有多个参数的非静态函数

c - C语言创建树的问题

java - 在 Jtable 列中显示处理后的值并使用原始值进行排序?

java - 如何在 java SWT 中显示 PNG 图像?

c++ - 在 C++ 类中,使用 "this"访问成员变量有什么区别

c - 在 Linux 上将 * 作为命令行参数传递时的奇怪行为