typedef struct {
char c[20];
int i;
} header;
void foo(std::string s) {
std::ifstream ifs(s.c_str(), std::ios_base::binary | std::ios_base::in);
if (ifs) {
std::filebuf* pbuf = ifs.rdbuf();
pbuf->pubseekpos(std::ios_base::beg);
// ... ?
}
}
我正在尝试以 C++ 方式以二进制模式读取文件,我无法识别调用从文件中读取位的正确方法,有一个read
for ifstream
但如果我应该使用这种方法,那么有什么意义呢?filebuf
?
为了简化事情我有一个struct
代表头的顺序、大小和字段,我希望有一种方法可以保留这个结构的实例,并将这些位写入正确的字段,就像fread
from C.
有人可以澄清这一点filebuf
通过未格式化的数据流读取文件时应该使用什么方法?
只需使用basic_istream<>::read() http://en.cppreference.com/w/cpp/io/basic_istream/read读取原始的、未格式化的字节数据:
void foo(std::string s) {
std::ifstream ifs(s.c_str(), std::ios_base::binary | std::ios_base::in);
if (ifs) {
char buffer[20];
if (!ifs.read(buffer, 20)) {
// Handle error
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)