C++和Java中的字符串之间的差异

2022-09-04 01:22:49

在我可以做这样的事情...C++

String s = "abc";
char c = s[i]; // works fine...

但是在 中,如果我尝试做同样的事情,它会抛出一个错误。为什么?。Java

在,要实现上述目标,我必须做到:java

s.toCharArray(); 

Strings的实现与Java中的实现有何不同?C++


答案 1

在java中,要实现上述目标,我必须做:s.toCharArray();

没有。你可以改用 charAt

char c = s.charAt(i);

基本上,C++允许用户定义的运算符 - Java没有。因此,该类不会公开任何类型的“索引”运算符;存在于数组中,而 a 不是数组。(它通常使用数组实现,但这是另一回事。StringString

编辑:如注释中所述,运算符对于字符串是特殊情况的 - 就在语言规范中。对于 也可以做同样的事情,但事实并非如此 - 并且由于它不在语言规范中,并且Java不支持重载运算符,因此无法在库代码中执行。(例如,不能为任何其他类提供自定义行为。+[]+


答案 2

不同之处在于,C++具有运算符重载,并使用它来访问字符串内容。

它们都以您无法更改它们的方式存储字符串字符。