c++ - 在文本文件中一起打印 hex 和 int

标签 c++ file

我正在尝试使用以下代码在同一文本文件中打印 member[0] 和 member[1] 的十六进制值以及 _records 的整数值:

 std::ofstream myoutputfile;

 myoutputfile << std::hex << (int)(unsigned char)_member[0] << ' ';

 myoutputfile << std::hex << (int)(unsigned char)_member[1] << ' ';

 myoutputfile<<_records << std::endl;

但是这段代码也以十六进制打印 _records。我试过:

myoutputfile<<(int)_records << std::endl;

但它仍然以十六进制打印。

谁能帮忙吗

最佳答案

使用 std::dec 将格式设置回十进制

myoutputfile<< std::dec << _records << std::endl;

如您所见,基本格式说明符粘性,因此无需每次都指定std::hex。您的代码可以重写如下以达到相同的效果。

std::ofstream myoutputfile;
myoutputfile << std::hex 
  << (int)(unsigned char)_member[0] << ' '
  << (int)(unsigned char)_member[1] << ' '
  << std::dec << _records << std::endl;

您还可以使用 Boost IO State Savers 自动重置为之前的状态.

#include <boost/io/ios_state.hpp>
#include <ios>
#include <iostream>
#include <ostream>

int  main()
{
    auto hex_printer = [](std::ostream& os, unsigned char byte) {
        boost::io::ios_flags_saver  ifs(os);
        os << std::hex << static_cast<unsigned>(byte) << ' ';
    };

    hex_printer(std::cout, 'A');
    std::cout << 42 << '\n';
}

Live demo

关于c++ - 在文本文件中一起打印 hex 和 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21189032/

相关文章:

java - 如何确保文件的内容类型是实际的内容类型

c++ - 尝试使用opencv(c++)在实时视频帧的中间绘制垂直线

c++ - (数字)和(-数字)的含义

c - __FILE__ 宏显示完整路径

java - 使用连续线程时 JVM 无缘无故关闭

c - 如何检查文件是否被锁定?

c++ - 将值传递给 main(int, char**)

c++ - 在Linux中这里有 “CreatePipe”和 “CreateProcessW”函数吗?

c++ - 程序不会运行 while 语句消息

java - java中如何将特定文件 move 到新文件夹