如何打印存储在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]
对std::cout
进行类型转换?
答案 0 :(得分:4)
operator<<
为char*
重载,它假设您有一个要打印的以空值终止的字符数组。将其转换为void*
以获取指针的值:
std::cout << "Address: " << static_cast<void*>(tokens[i]) << std::endl;
请在此处查看运行代码:https://ideone.com/9Cst8F