如何在结构矢量上执行字节序转换?
例如:
struct TestStruct
{
int nSomeNumber;
char sSomeString[512];
};
std::vector<TestStruct> vTestVector;
我知道如何交换int值,但是如何交换自定义结构的整个向量?
答案 0 :(得分:2)
如评论中所述。 Endian交换向量中的每个元素:
auto iter = vTestVector.begin();
while( iter != vTestVector.end() )
{
EndianSwap( iter->nSomeNumber );
iter++;
}
答案 1 :(得分:0)
#include <boost/foreach.hpp>
BOOST_FOREACH(TestStruct& s, vTestVector)
{
SwapEndian(s.nSomeNumber);
}
给予或接受,这样做。您不需要影响char字符串,只需要影响数字变量。 第
答案 2 :(得分:0)
如果您正在寻找一种通用方法(即单个模板元编程代码,可以让您迭代普通struct
的元素,则递归到子struct
s并在遇到它们时转换多字节整数值)然后你运气不好。遗憾的是,您无法在C ++中迭代任意struct
的元素 - 因此您需要为每种不同类型编写特殊情况代码。