Столкнулся со следующей функцией, автор использует её при записи в данных в .vtk файл. Подскажите, что эта функция делает?
template <typename T>
void SwapEnd(T& var)
{
char* varArray = reinterpret_cast<char*>(&var);
for (long i = 0; i < static_cast<long>(sizeof(var) / 2); i++)
std::swap(varArray[sizeof(var) - 1 - i], varArray[i]);
}
Меняет порядок байт в переменной. Только переменная должна быть POD, что, увы, не проверяется - иначе будут неприятности...
Например,
unsigned long L = 0xDEADBEEF;
cout << hex << L << endl;
SwapEnd(L);
cout << hex << L << endl;
выводит
deadbeef
efbeadde
Просто с обычной C-строкой, кстати, тоже будут проблемы... Даже если ее передать как массив - нулевой символ тоже будет участвовать в обмене.
Продвижение своими сайтами как стратегия роста и независимости