Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 以二进制形式读取文件-循环永不结束_C++ - Fatal编程技术网

C++ 以二进制形式读取文件-循环永不结束

C++ 以二进制形式读取文件-循环永不结束,c++,C++,我使用下面的代码打开一个文件,逐字符读取字符,并获得十六进制的字符数。问题是循环永远不会结束。怎么了 file>>x是否等同于x=file.get ifstream file; file.open(argv[1], ifstream::in|ifstream::binary); if (file.is_open()) { unsigned char x; file >> std::noskipws; while

我使用下面的代码打开一个文件,逐字符读取字符,并获得十六进制的字符数。问题是循环永远不会结束。怎么了

file>>x是否等同于x=file.get

ifstream file;
    file.open(argv[1], ifstream::in|ifstream::binary);
    if (file.is_open())
    {
        unsigned char x;

        file >> std::noskipws;
        while (file >> x) {

            stringstream s;
            s << std::hex << std::setw(2) << std::setfill('0')
                << (int)x;

            std::cout << s.str();
        }

        file.close();
    }

你如何确定循环永远不会结束?看起来一点也没错。你是复制粘贴还是从内存中输入的?对于你来说,重新键入有一种消除bug的好方法。我已经为一个1mb文件运行了代码,它永远不会停止打印元素。我刚刚从VisualStudio复制了代码。实际上,我已经等了2分钟才在新的测试中打印文件1MB的每个字节。我应该读取一个块并在一个内部循环中执行十六进制函数吗?一个1 MB的文件不是一个很好的测试用例-使用一个小的,只有几个字符的字符串,你可以立即识别,这样你就知道输出是正确的。而且你浪费了很多时间为每个角色构建一个字符串流。只需将输出直接发送到std::cout。首先尝试最简单的方法。如果速度太慢,就做复杂的事情。如果这不起作用,再问一次。