C++ 为什么我的fwrite命令只运行一次?
我正在使用C++ 为什么我的fwrite命令只运行一次?,c++,file,fwrite,C++,File,Fwrite,我正在使用fwrite存储名为rawData的QVector的值 这是我的密码: unsigend short* ptr = rawdata(); FILE * pFile; pFile = fopen("arrayValues.txt", "a"); fwrite(ptr, sizeof(unsigned short), sizeof(rawData), pFile); fclose(pFile); 上面的程序“工作”意味着我能够写入文件,当我用十六进制编辑器打开文件时,我可以看到
fwrite
存储名为rawData
的QVector的值
这是我的密码:
unsigend short* ptr = rawdata();
FILE * pFile;
pFile = fopen("arrayValues.txt", "a");
fwrite(ptr, sizeof(unsigned short), sizeof(rawData), pFile);
fclose(pFile);
上面的程序“工作”意味着我能够写入文件,当我用十六进制编辑器打开文件时,我可以看到里面的东西。但是,它只写入一帧的值,然后停止,即使程序一遍又一遍地调用该方法
更奇怪的是,如果我关闭程序并再次运行它,它将打开文件(文件中已经有上次运行的值),并在末尾附加一组新值。因此我知道我正在以追加模式打开文件。因为您提到了
rawData
是一个QVector,请替换:
sizeof(rawData)
与
如果这不起作用,我认为问题不在于您向我们展示的代码。请提供更多信息/代码
说明:
sizeof
运算符返回作为参数的类型的大小(以字节为单位)。在您的例子中,它返回类型QVector
使用的字节数,因为您没有给它任何指针作为参数,而是给它类型QVector
的对象。成员函数size()
是获取类QVector
的元素数的好方法 您能否演示如何多次调用代码段?问题可能出现在未显示的代码中。什么是rawdata()
和rawdata
?@DietmarKühl它位于名为run()的方法中
这是很多代码,所以我没有把它包括进去。@Olivier不,这就是问题所在,因为当我使用fstream
并在向量中迭代时,我能够毫无问题地写出所有值。这很有效!你能解释一下我以前的错误吗?我已经在答案中加了解释。
rawData.size()