gpt4 book ai didi

c++ - basic_ifstream<...>::read() 不读取任何内容

转载 作者:行者123 更新时间:2023-11-30 01:51:00 25 4
gpt4 key购买 nike

从这段代码构建的程序:

#include <fstream>
using std::basic_ifstream;

#include <ios>
using std::streamsize;

#include <ZenLib/Conf.h>
using ZenLib::int8u;

int main() {
#define charT int8u
#define T basic_ifstream<charT>
T ifs ("/proc/cpuinfo", T::in | T::binary);
#undef T
streamsize const bufsize (4096);
charT buf[bufsize];
#undef charT
return !ifs.read(buf, bufsize).gcount();
}

...返回 1。

所以 std::basic_ifstream<ZenLib::int8u>::read()无法从 /proc/cpuinfo 中提取任何字节.

我做错了什么吗?

最佳答案

实例化 std::char_traits除了charwchar_t是未定义的行为(我怀疑你的 charTunsigned char ,不是char .) 如果你想对字符使用不同的类型,你会必须定义一个新的特征类;对于 std::istream安夫 std::ostream ,您还必须为也打字。

问题是你想做什么。在您的示例中,您只调用 std::istream::read .如果是这种情况,最简单的解决方案是可能只是下降到系统级功能。这些可能想要一个 char*因为也有缓冲区,但是 reinterpret_cast来自 unsigned char*将工作。你可以这样做 std::istream<char>::read同样,但是如果你有一个 std::istream ,某些格式化的输入很有可能会悄悄进入,这会在你得到你的之前解释角色 reinterpret_cast中。

关于c++ - basic_ifstream<...>::read() 不读取任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26701268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com