Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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++ 在VisualStudio中,在文件中写出一个向量,然后再次读入,但这两个向量不相同_C++_Vector - Fatal编程技术网

C++ 在VisualStudio中,在文件中写出一个向量,然后再次读入,但这两个向量不相同

C++ 在VisualStudio中,在文件中写出一个向量,然后再次读入,但这两个向量不相同,c++,vector,C++,Vector,正如标题提到的,我在我的工作项目中遇到了一个奇怪的问题。我发现在VisualStudio2013(2010)中,在文件中写出一个向量,然后再读入,这两个向量是不一样的。 代码如下所示 #include <iostream> #include <vector> #include <fstream> using namespace std; int main() { //construct a vec int size = 1000; vector<int

正如标题提到的,我在我的工作项目中遇到了一个奇怪的问题。我发现在VisualStudio2013(2010)中,在文件中写出一个向量,然后再读入,这两个向量是不一样的。 代码如下所示

#include <iostream>
#include <vector>
#include <fstream>

using namespace std;
int main()
{
//construct a vec
int size = 1000;
vector<int> vec_out(size);
for (int i = 0; i != vec_out.size(); ++i)
{
    vec_out[i] = i;
}


//write the vector out
ofstream of("vec", ios::out);
int n = vec_out.size();
of.write((char*)&n, sizeof(n));
for (int i = 0; i != vec_out.size(); ++i)
{
    int value = vec_out[i];
    of.write((char*)&value, sizeof(value));
}
of.close();


//read it in
ifstream in("vec", ios::in);
int m;
in.read((char*)&m, sizeof(m));
vector<int> vec_in(m);

for (int i = 0; i != vec_in.size(); ++i)
{
    int value;
    in.read((char*)&value, sizeof(value));
    vec_in[i] = value;
}
in.close();
//here the value of vec_int is not exactly
//the same with vec_out
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
//构造向量机
int size=1000;
矢量矢量输出(大小);
for(int i=0;i!=vec_out.size();++i)
{
vec_out[i]=i;
}
//写出向量
流(vec,ios::out);
int n=vec_out.size();
of.write((char*)&n,sizeof(n));
for(int i=0;i!=vec_out.size();++i)
{
int value=vec_out[i];
of.write((char*)和value,sizeof(value));
}
of.close();
//读入
ifstream-in(“vec”,ios::in);
int m;
in.read((char*)&m,sizeof(m));
向量vec_in(m);
对于(int i=0;i!=vec_in.size();++i)
{
int值;
in.read((char*)和value,sizeof(value));
vec_in[i]=值;
}
in.close();
//这里vec_int的值不完全相同
//维克多也一样
}
在我的机器中大约25号之后,从文件中读取的向量都是相同的或转储值。 代码在ubuntu和g++上正常工作

有人能帮我弄清楚吗


谢谢大家!

可能是ascii/二进制问题。打开文件时,请尝试使用
ios::in | ios::binary
。@RSahu谢谢。这正是你说的。非常感谢。我匆忙地写代码。另一方面,让人困惑的是,这些代码在ubuntu.Unrelated上是否正常工作,但请看一下如何初始化向量。