c++实现一个文件的十六进制查看器

要求输入一个文件 按格式打印每个字节的值
文件既可以是文本文件,也可以是二进制文件
文件名由键盘键入
文件显示时,每行显示16个原始字节,分三部分
左侧是该行首字符在文件中的位置 (16进制,宽度8位)
间隔两个空格
中间是每个字节的十六进制形式,每个字节间空格分隔 每八个中间有个“-”
间隔五个空格
右侧为每个字节的ASCII字符形式(ASCII码在33-126之间图形字符打印,其余用“.”表示)
显示完成后 最后一行显示的字节数不能与实际文件字节数有差异