正如标题所说,你如何使用fstream
读取十六进制值?
我有这个代码:(假设我们在文件中有“FF”。)
fstream infile;
infile.open(filename, fstream::in|fstream::out|fstream::app);
int a;
infile >> std::hex;
infile >> a;
cout << hex << a;
但这并没有给我任何输出而不是ff
。我知道有一个fscanf(fp, "%x", val)
,但我很好奇有没有办法使用流库来做到这一点。
更新:
我的代码一直都是正确的,事实证明我的错误是我无法阅读"FFF"
并将其放入变量a,b,c中这样
while (infile >> hex >> a >> b >> c)
{
cout << hex << a << b << c << "\n";
}
有人可以帮我这个吗?我是否必须将要读取的每个HEX值与空格分开?
因为infile >> hex >> setw(1)
不起作用..
答案 0 :(得分:10)
您可以使用十六进制修饰符
int n;
cin >> hex >> n;
答案 1 :(得分:6)
你必须在阅读时链std::hex
,就像把它链起来写作一样:
infile >> std::hex >> a;
答案 2 :(得分:6)
这有效:
int main()
{
const char *filename = "blah.txt";
ifstream infile(filename, fstream::in);
unsigned int a;
infile >> hex >> a;
cout << hex << a;
}
答案 3 :(得分:0)
还要确保输入文件是使用Hex编辑器而不是常规文本编辑器编写的。 否则,包含字符“a”的文件foo.txt将被读取为0x61并打印为0x61而不是0xa。 Linux的一个很好的Hex编辑器是“Bless”。