const
#include <iostream>
#include <fstream>
#include <iomainip>
using namespace std;
int main(int argc, char* argv[])
{
ifstream inf(argv[1]);
inf >> noskipws;
cout << setbase(16);
cout << setfill('0');
size_t fileOffset = 0;
char ch;
inf >> ch;
while (!inf.eof())
{
if ( fileOffset % 16 == 0 )
{
cout << setw(4);
if(fileOffset ! = 0)
cout << endl;
cout << fileOffset << " ";
}
cout << set(2);
cout << (int)ch << " ";
inf.peek();
inf >> ch;
}
cout << endl;
inf.close();
return 0;
}
是包含argv[1]
的文本文件。
我们要将其转换为数字。
如果我现在就赶来,那就是......
abcdefghijklmnopqrstuvwXYZ
(我想在左侧只展示一次0000 61 0000 62 0000 63 0000
0000 69 0000 6a 0000 6b 0000
)
0000
和inf.peek();
是我制作的代码。我觉得我是
就在inf >> ch
。我应该想出一个移动到的代码
文件中的下一个字符。我应该如何替换它
inf >> ch
打印出来像
inf.peek()
答案 0 :(得分:0)
问题是你永远不会增加fileOffset
,因此它总是0
。当它0
打印偏移而不先开始新行时,每个字符前面都有0000
。只需在循环底部添加fileOffset++
即可。
inf >> ch;
while (!inf.eof())
{
if ( fileOffset % 16 == 0 )
{
cout << setw(4);
if(fileOffset ! = 0) {
cout << endl;
}
cout << fileOffset << " ";
}
cout << setw(2);
cout << (int)ch << " ";
fileOffset++;
inf >> ch;
}
也不需要inf.peek()
。您cout << set(2);
的拼写错误cout << setw(2);
。