C 文件处理打开
C++ file handling opening
while (file.read((char *)&vg, sizeof(vg)))
这里'char'的意义是什么? 我不知道为什么在C 中读取" dat"文件的文本时我们使用" char"编程。
我尝试以mcve的方式回答这个问题,假设file
是std::istream
(包括从中得出的类(。
成员std::istream::read(char_type*, std::streamsize)
作为第一个参数a std::istream::char_type*
= char*
。C风格语法
(char*)(ptr)
将ptr
铸成char
的指针。在这种情况下,将vg
的地址重新解释为char
数组的地址。此铸件是必要的,以便可以调用read()
。char
在这里使用一个字节:代码从文件读取并写入对象vg
字节。
假设file
是std::fstream
,该功能read
期望char*
,这意味着"字节的缓冲区",我可以从文件中读取字节的值"。
您没有显示适当的测试柜,但是我们必须假设vg
不是字节的缓冲区,而是实际上某些对象(例如,也许是整数(。通过将VgsType*
施放到char*
,您允许read
函数继续,就好像一样,它在构成vg
的基础字节上运行。
请注意,有时这在逻辑上是不安全的;这取决于vg
是什么。但是,对char*
的实际演员阵容是有效的,因为该标准专门允许它作为检查对象的字节表示。
以下语法(char*)
这是char*
的C样式。因此,它通过执行&vg
并将其转换为char*
来获取VG的地址。读取功能必须需要类型char*
或可以隐式转换为char*
的类型。
通常最好使用static_cast。另外,我会尝试从文件中读取而无需作为一般实践(并非所有类型都可以施放到其他类型(,这应该使用标准库流。
- 如何在 c++ 窗口中将参数和返回的退出值传递到批处理文件/从批处理文件获取返回的退出值
- 从之前添加的批处理文件中删除单词
- 无法从C++ Windows 服务执行批处理文件
- 处理文件期间输出失真.wav
- TOCTTOU - 在处理文件之前使用访问权限
- 如何将批处理文件的输出读取到C 中的字符串中
- cmake:生成批处理文件调用cl.exe
- 处理文件行流迭代器
- 如何运行批处理文件和读取输出
- 用文本处理文件
- GetCommandLine():无法从批处理文件(GCC-Compiler)传递多行参数
- exe文件不被识别为内部或外部命令,可操作的程序或批处理文件在C++
- 您如何使用System()调用带有引号的参数的批处理文件
- Visual Studio C - 无法输出预处理文件
- 重命名批处理文件(删除名称中的一些符号)(python/matlab/shell)
- Dokan:我应该自己处理文件共享和访问权限吗?
- C++处理文件,在制作程序时遇到麻烦
- 对桌面进行了更改.ini使用批处理文件,但文件夹图标不会更改
- 如何将字符串转换为批处理文件中的整数
- 为什么我不能在Windows Server 2008中使用System()从服务启动批处理文件