Разница между строками в C ++ и Java

В C++ я могу сделать что-то вроде этого ...

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

Но в Java, если я пытаюсь сделать то же самое, выдается ошибка. Почему?.

В java, чтобы добиться вышеупомянутого, мне нужно сделать:

s.toCharArray(); 

Чем реализация Strings в C++ отличается от реализации в Java?

12 голосов | спросил TheLostMind 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 19 Sep 2013 11:01:35 +0400 2013, 11:01:35

3 ответа


0

Разница в том, что C ++ имеет перегрузку операторов и использует ее для доступа к содержимому строки.

Они оба хранят строковые символы таким образом, что вы не можете их изменить.

ответил andy256 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 19 Sep 2013 11:05:04 +0400 2013, 11:05:04
0

Причина, по которой можно написать

string s = "abc";
char c = s[i]; 

в C ++ заключается в том, что класс string перегружен оператором индексации (скажем, оператором []), который позволяет программистам получать доступ к символам Объект string аналогичен доступу к элементу массива, несмотря на тот факт, что string объект не является массивом.

Java, с другой стороны, не допускает перегрузки операторов любого вида (единственное исключение - это перегруженный оператор + для строк) и, следовательно, оператор индексирования не является и не может быть перегружен для объектов String. В Java для доступа к символу строки необходимо использовать методы-члены-аксессоры, такие как charAt. Вы также можете вызвать метод toCharArray метода String class, который возвращает вам массив символов строкового объекта, и вы можете использовать оператор индексации с этим возвращаемым значением:

char c = s.toCharArray()[i];
ответил MxNx 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 19 Sep 2013 11:24:36 +0400 2013, 11:24:36
0

См. метод String #charAt

  

Возвращает значение символа по указанному индексу. Индекс колеблется от 0 до length () - 1. Первое значение последовательности в индексе 0, следующее в индексе 1 и т. Д., Как для индексации массива.

     

Если значение символа, указанное в индексе, является суррогатом, возвращается суррогатное значение.

public char charAt(int index)
ответил ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 19 Sep 2013 11:02:50 +0400 2013, 11:02:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132