Есть ли безопасный способ создать строку
в D, используя информацию, доступную только во время выполнения, без выделения памяти?
Простой пример того, что я мог бы сделать:
void renderText(string text) { ... }
void renderScore(int score)
{
char[16] text;
int n = sprintf(text.ptr, "Score: %d", score);
renderText(text[0..n]); // ERROR
}
Используя это, вы получите сообщение об ошибке, потому что фрагмент текста
не является неизменяемым и, следовательно, не является строка
(то есть неизменяемый (char) []
)
Я могу придумать только три способа обойти это:
строку
. Это работает, но некрасиво. renderText
, чтобы он принимал const (char) []
. Здесь это работает, но (а) это некрасиво и (б) многие функции в Phobos требуют строки
, поэтому, если я хочу использовать их таким же образом, это не сработает. Все это не особенно приятно. Я что-то пропустил? Как все остальные могут решить эту проблему?