CharBuffer в строку?

Как получить строку "привет" из CharBuffer? toString() похоже не работает.

      val a = CharBuffer.allocate(10);
a.put('h');
a.put('i');
val b = a.toString();

Состояния переменных после выполнения приведенного выше кода:

1 ответ

Решение

CharBufferдовольно низкоуровневый и действительно предназначен для ввода-вывода, поэтому поначалу может показаться нелогичным. В вашем примере он фактически вернул строку, содержащую оставшиеся 8 байтов, которые вы не установили. Чтобы он возвращал ваши данные, вам нужно вызвать flip() как это:

      val a = CharBuffer.allocate(10);
a.put('h');
a.put('i');
a.flip()
val b = a.toString();

Вы можете найти больше в документации Buffer

Для более типичных случаев использования гораздо проще использовать:

      val a = StringBuilder()
a.append('h')
a.append('i')
val b = a.toString()

Или даже используйте утилиту Kotlin, которая обертывает StringBuilder:

      val b = buildString {
    append('h')
    append('i')
}
Другие вопросы по тегам