Это будет всегда обычно работает, на какой бы платформе вы ни работали, если, работая, вы просто подразумеваете «не сбой». EDIT Я пропустил аргумент size
, равный string::append
, поэтому он может действительно аварийно завершить работу или привести к странным результатам из-за переполнения буфера на платформах, где int
s не имеют длины 4 байта.
Тем не менее, вы можете наблюдать разные результаты в зависимости от целочисленного размера и порядкового номера платформы, на которой работает ваш код, а это плохо , если вы хотите поделиться файлами, созданными на платформе на другую платформу, на которой запущена та же программа.
Это зависит от того, что вы ожидаете от этого. Windows (обычно) работает на машинах little-endian , которые имеют 32-битные целые числа, что означает, что ваш код добавит 05 00 00 00
к вашей строке. Однако на машинах с прямым порядком байтов , которые также имеют 32-битные целые числа, ваш код добавит 00 00 00 05
к строке. Хуже того, ваш код может работать на платформах с 16-разрядными целыми числами с прямым порядком байтов, к которым добавляется 00 05
.
В зависимости от того, какое поведение вы хотите, может быть хорошей идеей реализовать «менее волшебный» способ добавления байтов, например for
цикл, который знает , он хочет добавить 4 байта в немного порядковый способ:
int number = 5;
for(int i = 0; i < 4; i++)
{
char numberByte = (number >> (8 * i)) & 0xFF;
cppstring.append(&numberByte, 1);
}
Таким образом, вы уверены, что результаты будут одинаковыми для всех платформ, поскольку код не зависит ни от размера целого числа, ни от порядка байтов.