Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;将对象从文件复制到阵列_C++_Visual C++ - Fatal编程技术网

C++ C++;将对象从文件复制到阵列

C++ C++;将对象从文件复制到阵列,c++,visual-c++,C++,Visual C++,Hi需要复制文件中的写入对象以复制到数组,但下面的代码给了我一个错误 T Obj T arr[20]; while(file.read((char*)&Obj,sizeof(Obj))){ int i=0; i++ arr[i]==Obj; } 错误C2678:二进制“==”:未找到接受类型为的左侧操作数的运算符。首先,运算符=用于比较,而不是赋值。对于分配,您需要一个=。

Hi需要复制文件中的写入对象以复制到数组,但下面的代码给了我一个错误

   T Obj
   T arr[20];
   while(file.read((char*)&Obj,sizeof(Obj))){
          int i=0;
             i++

            arr[i]==Obj;
            }

错误C2678:二进制“==”:未找到接受类型为

的左侧操作数的运算符。首先,运算符
=
用于比较,而不是赋值。对于分配,您需要一个
=
。其次,您的代码是不可移植的,并且可能已损坏,因为对象在磁盘上存储为字节序列的方式不一定与它作为
T
对象存储在内存中的方式相同。这是因为不同的计算机/平台/编译器以不同的方式表示二进制数据。另外,正如Vlad在下面的评论中提到的,如果
T
的实例包含内部指针(比如
std::string
),那么您的程序就会崩溃


你可能应该查看<强> <强>,或者至少使用C++ iOFILE将对象序列化为文本格式,然后使用<代码> istrAMMyItter < /C>从磁盘读取它们。

< P>,首先,操作符<代码>=< /COD>用于比较,而不是赋值。对于分配,您需要一个
=
。其次,您的代码是不可移植的,并且可能已损坏,因为对象在磁盘上存储为字节序列的方式不一定与它作为
T
对象存储在内存中的方式相同。这是因为不同的计算机/平台/编译器以不同的方式表示二进制数据。另外,正如Vlad在下面的评论中提到的,如果
T
的实例包含内部指针(比如
std::string
),那么您的程序就会崩溃


你应该仔细查看<强> <强>,或者至少使用C++ iOFILE将对象序列化为文本格式,然后使用<代码> istRAMMyItter < /C>从磁盘读取它们。

< P> C++中'= =是相等运算符,如果要将对象分配给数组“ARR”,则应该使用单个'= '。
直接从二进制文件读取对象也是“有问题的”。你应该使用“流运算符”来代替(谷歌it)。C++中的

< p>是相等运算符,如果你想把对象分配给数组“ARR”,你应该使用一个单独的‘=’。
直接从二进制文件读取对象也是“有问题的”。你应该改用“流操作符”(Google it)。

首先,在i++之后没有分号。。。。我是本地的,所以代码将始终访问arr[1],首先,在i++…之后没有分号。。。。而且我是本地的,所以代码将始终访问arr[1]。。。如果对象包含指针,这种反序列化显然是错误的。。。。如果对象包含指针,这种反序列化显然是错误的。