使用 std::cout 时如何模拟 printf 的 %p 格式?
How to simulate printf's %p format when using std::cout?
unsigned char *teta = ....;
...
printf("data at %pn", teta); // prints 0xXXXXXXXX
如何使用iostream
s打印变量地址?有std::
吗??功能像std::hex
做这种转换(地址->字符串),所以std::cout << std::??? << teta << std::endl
将打印该地址?
转换为void*
:
unsigned char* teta = ....;
std::cout << "data at " << static_cast<void*>(teta) << "n";
iostreams通常假定您有一个带有任何char*
指针的字符串,但是void*
指针只是一个地址(简化),因此iostreams除了将该地址转换为字符串之外不能做任何事情,而不是将该地址的内容转换为字符串。
根据你是否想使用printf提供的更多格式化选项,你可以考虑使用sprintf
通过它,您可以像使用printf一样格式化字符串,然后使用std::cout
但是,这将涉及到使用临时字符数组,因此选择取决于。
一个例子:
unsigned char *teta = ....;
...
char formatted[ 256 ]; //Caution with the length, there is risk of a buffer overflow
sprintf( formatted, "data at %pn", teta );
std::cout << formatted;
相关文章:
- 0x%08lx 格式说明符在 printf 语句到 cout
- 了解 printf 格式规范中的 %03.3u
- 在没有格式说明符的情况下在c++中使用类似printf的实用程序
- 找到printf的意外错误,该格式为0.1F,用于四舍五入数字
- printf 的浮点格式标志 (%f) 仅适用于英文数字格式
- 在C 11 printf格式上寻求解释器,这些printf格式会消耗多个值
- 在CPP的COUT中等效的printf格式
- printf 格式说明符标志'0' %p,正确与否?
- 不正确的printf格式指定器编译
- 基于数据类型的printf格式
- 如何将 GCC 的 printf 格式属性与 C++11 可变参数模板一起使用?
- 一种在编译时用C++根据printf格式检查参数的可移植方法
- 将printf格式与iomanip匹配
- 在 Windows 上未签名__int64的 printf 格式
- 打印n个空格字符-(f)printf格式
- 从printf格式字符串中提取类型信息
- Python RE -正则表达式,用于匹配带有转义引号的类似printf格式字符串
- c++ /C int32_t和printf格式:%d或%ld
- 视觉C++:"float"的 printf() 格式规范是什么?
- 最大双宽度的Printf格式说明符