gpt4 book ai didi

c++ - 写入二进制文件的 vector 数据在读回另一个 vector 时不一样,为什么?

转载 作者:行者123 更新时间:2023-11-30 03:02:02 26 4
gpt4 key购买 nike

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include "ReadText.h"
using namespace std;

const string FILE_NAME = "TopicIinBasic.txt";

template<typename T>
char * as_bytes( T &inType );


int main()
{
vector<int> vec(2, 2);

vector<int> receive(2);

fstream write( "myFile.dat", ios::out | ios::binary );

write.write( as_bytes(vec[0]), sizeof(vec[0] * 2) );

write.close();

fstream read( "myFile.dat", ios::in | ios::binary );

read.read( as_bytes(receive[0]), sizeof(vec[0] * 2) );

cout << receive[0] << ' ' << receive[1] << endl;

return 0;
}

template<typename T>
char * as_bytes( T &inType )
{
void* addr = &inType;

return static_cast<char*>(addr);
}

我先把vec的内容写入二进制文件。然后关闭文件。然后以阅读模式再次打开它。然后我尝试将二进制文件的内容放入receive。但是当我显示receive 的内容时,输出是2 0,而不是2 2。为什么会这样?

谢谢。

最佳答案

您正在获取表达式 vec[0] * 2 的大小,它与 vec[0] 的大小相同。结果,您只编写了一个元素!

* 2 移到括号外将修复它。 (为了清楚起见,我也将其移到了前面。)

write.write( as_bytes(vec[0]), 2 * sizeof(vec[0]) );

关于c++ - 写入二进制文件的 vector 数据在读回另一个 vector 时不一样,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10457857/

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