我有以下代码:
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/