二进制文件中的某些数据如图所示,并以奇怪的方式显示OS
Why some data in binary file is shown as it is and other is shown in a strange way
我有代码,将这些结构的向量写入二进制文件:
struct reader{
char name[50];
int card_num;
char title[100];
}
例如,当我写入文件结构{一个,1,一个}和打开.txt文件时,一切都可以正常工作:
ONE ol的
ONE olHomhomhomhomhomholomhomhomholomhomhomholomhomholomho了电电ph> ONE olomoly的电电lommomhomhomhomhomhomhomhomhomhomhomhomhomhomhomhommommommomhomom都是lommommommommommommomommommommom都是
所以我被问到是谁显示的,这取决于什么,但是我不能为这个问题提供一个很好的扩展范围
编辑:我用来写的代码
void Write_to_File(vector<reader>& vec){
cin.clear(); // clearing
fflush(stdin);// input stream
const char* pointer = reinterpret_cast<const char*>(&vec[0]);
size_t bytes = vec.size() * sizeof(vec[0]);
fstream f("D:\temp.txt", ios::out);
f.close();
ofstream file("D:\temp.txt", ios::in | ios::binary);
file.write(pointer, bytes);
file.close();
remove("D:\lab.txt");
rename("D:\temp.txt", "D:\lab.txt");
cout << "n*** Successfully written data ***nn";
}
P.S.当我从文件中阅读时,一切正常
您在文件中写154个钟表,只有一个是char,因此您的文字尝试阅读Charir,但主要是垃圾。您写二进制,您不希望能够读取某些可读性。
显示了二进制文件中的某些数据,如它所示,而另一个数据以奇怪的方式显示
看来,您正在尝试读取二进制数据,因为它包含了字符通用的数据。其中一些 - 但不是全部。也许这是谁,这似乎很奇怪。除此之外,输出似乎是完全合理的。
它显示的是谁
因为那是对象在读者使用的字符中包含的数据的文本表示。
什么取决于
这取决于您初始化的内存具有的值。例如,第一个字符显示为O
,因为您使用Vealue 'O'
初始化的name[0]
。某些数据是在成员之间无法直接初始化的成员之间的填充。这些字节依赖的价值未指定。
相关文章:
- 如何在c++中为模板函数实例创建快捷方式
- 在c代码之间共享数据的最佳方式
- 在C++中将函数压缩为两种方式
- 以螺旋方式打印矩阵的程序.(工作不好)
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 创建引用向量的优雅方式
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 不同/较旧的处理器运行c++代码的方式是否不同
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- "ostream &os"有什么用?
- 重载方法的方式会在使用临时调用时生成编译器错误
- 在reactor中存储eventHandlers的最佳方式是什么
- 二进制文件中的某些数据如图所示,并以奇怪的方式显示OS
- CMake 在 Linux (Ubuntu) 上使用"target_include_directories"的方式与 OS X 不同
- 在Mac OS X中仅使用给定的文件路径以编程方式装载磁盘/卷
- Qt生成按键(键盘)到系统(OS)的跨平台方式
- 最小化到停靠后恢复Qt应用程序,使用OS X上的扩展坞快捷方式
- 如何在 OS X 下以编程方式加入无线网络