Использование str *, возможно, является самым простым способом построения строк с нулевым символом в конце по крайней мере на C.Угол производительности заключается в том, что перед тем, как на самом деле становится возможным копирование, необходимо рассчитать позицию назначения в строке назначения (то есть позицию найденного нулевого байта).Затем длина исходной строки должна быть рассчитана, чтобы у вас было достаточно памяти в месте назначения.Это увеличивает накладные расходы (чем длиннее строка) по сравнению с использованием memcpy, когда вам нужно иметь достаточно большой буфер и отслеживать, сколько байт вы использовали.
(Тогда у вас могут быть дополнительныесложность, если в настройках компилятора указаны 2-байтовые символы)
Так что, если длина строки составляет 3000 байтов, и вы добавляете строки «a», а затем «b», каждый из них потребует сканирования через 3000 и 3001 байт, прежде чем сможетзапишите два байта каждый в «a» и «b» («a» + null и «b» + null).Попробуйте оптимизировать это!Добавление «b» к «a» перед добавлением к 3000-байтовой строке будет намного быстрее.
Лично я бы использовал memcpy для строк назначения размером более 50 байтов или около того.Код становится немного сложнее, но как только вы это сделаете несколько раз, это легко.