- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我想使用 basic_filebuf
读取文件的内容。我有一个名为 boost::uintmax_t
的类型,它的大小为 8 字节
。我正在尝试编写以下内容:
typedef basic_filebuf<uintmax_t> file;
typedef istreambuf_iterator<uintmax_t> ifile;
file f;
vector<uintmax_t> data, buf(2);
f.open("test.txt", std::ios::in | std::ios::binary);
f.pubsetbuf(&buf[0], 1024);
ifile start(&f), end;
while(start != end)
{
data.push_back(*start);
start++;
}
问题是一些 bytes
被读取了,其他的则没有。例如,假设编号为 1-9
的文件中有 9 个字节
:
|1|2|3|4|5|6|7|8|9|
当我运行上面的代码时,只有一个元素被推回data
,它只包含来自f
中原始数据的4字节
>:
[0|0|0|0|4|3|2|1] --> only element in [data]
我做错了什么?这是我第一次直接使用basic_filebuf
,虽然我知道如何使用filebuf
。
最佳答案
basic_filebuf 处理“内部”字符类型和“外部”字符类型。 “外部”是文件的内容,总是字节。 “内部”参数是模板参数,是在其与程序的接口(interface)中使用的参数。为了在两者之间进行转换,basic_filebuf 使用其语言环境的 codecvt facet。
所以如果你想让它直接写入你给它的字节,你有两个选择:
关于c++ - 如何将 basic_filebuf 与 char 以外的元素类型一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1423560/
这是来自客户端的代码(使用) struct sockaddr_in stSockAddr; int Res; int SocketFD; SocketFD = socket(P
有谁知道 GNU GCC 的 libstdc++ 中 basic_filebuf 的默认缓冲区大小?我知道成员函数 pubsetbuf() 并且我很确定缓冲区大小是实现定义的。在 C 中很简单,从
我研究了由 cppreference.com 提供的 std::basic_filebuf::seekpos 的文档页面。并被以下句子弄糊涂了: If the file is open for rea
来 self 的 C++ 标准拷贝 [§27.8.2.1p4]: basic_stringbuf(basic_stringbuf&& rhs); Effects: Move constructs fr
假设我想使用 basic_filebuf 读取文件的内容。我有一个名为 boost::uintmax_t 的类型,它的大小为 8 字节。我正在尝试编写以下内容: typedef basic_fileb
为什么下面的代码会抛出异常?请注意,该文件是一个 /proc/pid/stat 文件,因此它可能会受到内核的干扰。 // Checked that file does exist try { st
我正在尝试使用 Microsoft 特定 filebuf::sh_none打开 fstream 的变量在独占模式(另一个 Microsoft 特定功能)。我收到上述错误。我正在进口 .我该如何解决这
我是一名优秀的程序员,十分优秀!