1

如何打印存储在char*数组中的数据[在 C 中,我们%p用来显示地址]。

char * tokens[5];
for(int i=0;i<5;i++)
tokens[i] = new char[5];

for(int i=0;i<5;i++)
std::cout<<"Address: "<<tokens[i]<<std::endl;

/*Add data in the array*/

for(int i=0;i<5;i++)
delete[] tokens[i];

这给了我,

Address: 
Address: 
Address: 
Address: 
Address: 

我知道这一定是因为,tokens[i]是一个字符串的起始地址,所以cout打印现在为空的字符串。

我必须tokens[i]对 at 进行什么类型转换std::cout

4

1 回答 1

4

operator<<被重载char*,它假定您有一个要打印的以空字符结尾的字符数组。将其转换为 avoid*以获取指针的值:

std::cout << "Address: " << static_cast<void*>(tokens[i]) << std::endl;

在此处查看运行代码:https ://ideone.com/9Cst8F

于 2013-05-16T14:40:58.173 回答