gpt4 book ai didi

c++ - 自定义数据 iostream

转载 作者:太空狗 更新时间:2023-10-29 20:49:10 24 4
gpt4 key购买 nike

我有一个数据结构定义为

struct myDataStruct
{
int32_t header;
int16_t data[8];
}

我想获取一个字符流并将其转换为 myData 流。我应该扩展什么流类?我想创建一个自定义流类,这样我就可以做类似的事情

myDataStruct myData;
myDataStruct myDataArray[10];

myDataStream(ifstream("mydatafile.dat"));
myDataStream.get(myData);
myDataStream.read(myDataArray, 10);

最佳答案

代替 myDataStream.get(myData),您所做的是为您的数据类型重载 operator>>:

std::istream& operator>>(std::istream& is, myDataStruct& obj)
{
// read from is into obj
return is;
}

如果你想读入一个数组,只需要写一个循环:

for( std::size_t idx=0; idx<10; ++idx ) 
{
myDataStruct tmp;
if( is >> tmp )
myDataArray[idx] = tmp;
else
throw "input stream broken!";
}

使用函数模板,您还应该能够重载右侧数组的运算符(但我从未尝试过):

template< std::size_t N >
std::istream& operator>>(std::istream& is, myDataStruct (&myDataArray)[N])
{
// use loop as above, using N instead of the 10
}

但我分不清这是华丽还是卑鄙。

关于c++ - 自定义数据 iostream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1359703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com