c++ - Cout 不打印指向内存的内容

标签 c++ memory cout

我有以下代码:

if (myFile.is_open()) {
    int i = 0;
    while (myFile.good()) {
        char *ptr = &(reinterpret_cast<char*>(&mem[0]))[i];
        myFile.read(ptr, sizeof(struct req));
        cout << ptr << endl;
        i += sizeof(struct req);
    }
}

这里循环中的 cout 似乎没有打印任何内容,尽管我知道代码肯定是在设置内存,因为如果我执行类似 cout << mem[5] 的操作,它会打印出正确的值。反而。基本上,我只想打印 ptr 的内容指的是。这可能是一个愚蠢的问题,但有人知道这里出了什么问题吗?

最佳答案

cout << ptr , 如果 ptr类型为 char* , 款待 ptr作为指向 C 风格字符串(的第一个字符)的指针,它打印该字符串的内容,直到但不包括终止 '\0'。空字符。

如果要打印指针值,转换为void* :

cout << (void*)ptr << ...

假设您实际上想要打印指针的值,它可能会显示为十六进制内存地址。你的标题说“指针的内容”,这将是内存地址(指针对象本身的内容)。相反,如果您想打印指针指向的数据,请更新您的问题以更清楚地说明您要打印的内容和格式。

关于c++ - Cout 不打印指向内存的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14916726/

相关文章:

c++ - 如何将位图转换为内存中的 PIX?

c++ - 将智能指针传递给需要 void* 的函数?

java - 不断增长的 Java 进程驻留内存使用 (RSS)

c++ - 如何计算 "count_if"- 字符串的 STL 函数?

c++ 无法获取 "wcout"来打印 unicode,并让 "cout"继续工作

c++ - Linux (Fedora 13) 与 OS X 中的 sigwait

c++ - wglCreateContext GetLastError() 0xc007001f

c++ - 如何更改 C++ 中变量的常量性?

android - Android 中加载、回收和消除位图以提高内存效率

c++ - 输出结果不是我所期望的