Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.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++_Flush - Fatal编程技术网

C++ C++;流冲洗有时会丢失尾随的空值

C++ C++;流冲洗有时会丢失尾随的空值,c++,flush,C++,Flush,在Windows7和VC++2010 professional上使用flush with of Stream时,我得到了令人费解的文件输出 本质上,我想序列化一些值,并在调试时检查它们。为什么文件在写入INT_MAX之前包含不正确的序列化值?请注意,无符号int值似乎被截断(仅前两个字节),然后在写入int_MAX值后,丢失的字节会重新出现。很奇怪。我在断点期间在单独的十六进制编辑器中检查文件 在调试或发布模式下,这似乎是一个问题,并且似乎只影响以一对00(NULL)结尾的值 我曾尝试写入网络磁

在Windows7和VC++2010 professional上使用flush with of Stream时,我得到了令人费解的文件输出

本质上,我想序列化一些值,并在调试时检查它们。为什么文件在写入INT_MAX之前包含不正确的序列化值?请注意,无符号int值似乎被截断(仅前两个字节),然后在写入int_MAX值后,丢失的字节会重新出现。很奇怪。我在断点期间在单独的十六进制编辑器中检查文件

在调试或发布模式下,这似乎是一个问题,并且似乎只影响以一对00(NULL)结尾的值


我曾尝试写入网络磁盘,在文件句柄上调用_commit和fflush,并尝试链接commode.obj(尽管我根本不确定链接是否确实发生)。这些东西都没用。现在我能做的最好的事情就是在序列化开始时写出INT_MAX来“初始化”这个东西,因为随后的值会被正确写入。

相关:我很好奇为什么您不使用实际的
uint32\u t
,并避免使用
unsigned int
长32位的骰子。谢谢您的建议。你可能是对的,应该使用uint32\u t。我认为程序在刷新后返回并在文件中插入值是很狡猾的。
ofstream myStream("testfile.txt", ios::out | ios::binary);

unsigned int val = 3;   
myStream.write((char *) &val, 4);
myStream.flush(); 
// breakpoint, check file HEX: 03 00
//                                   ^^ ^^ missing values


val = 4;
myStream.write((char *) &val, 4);
myStream.flush();  
// breakpoint check file HEX: 03 00 04 00
//                                        ^^ ^^ missing values

val = INT_MAX;
myStream.write((char *) &val, 4);
myStream.flush();  
// breakpoint check file HEX: 03 00 00 00 04 00 00 00 FF FF FF 7F
//                                  ^^ ^^       ^^ ^^              reappeared values