1

このコードから構築されたプログラム:

#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

私は何か間違ったことをしていますか?

4

2 に答える 2

2

ストリーム ライブラリは、整数ではなくcharやなどの文字型で使用するように設計されています。wchar_t

C++11 標準: 27.2.2

  1. 条項 27 のクラスでは、charT という名前のテンプレート仮パラメーターは、char、wchar_t、および iostream コンポーネントのいずれかが使用できる文字の要件を満たすその他の実装定義の文字型を含む型のセットのメンバーを表します。インスタンス化されます。

多分これから始めます:

int main()
{
    std::ifstream ifs("/proc/cpuinfo", std::ios::binary);
    std::cout << ifs.rdbuf();
}
于 2014-11-02T16:15:24.903 に答える