ami*_*n__ 1 c++ string pointers cout char
当我打印一个char指针时printf(),它使用转换说明符决定是应该打印地址还是根据%u或%s打开整个字符串.
但是当我想做同样的事情时cout,如何cout决定在地址和整个字符串中应该打印什么?这是一个示例来源:
int main()
{
char ch='a';
char *cptr=&ch;
cout<<cptr<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在我的GNU编译器中,cout尝试将ch输出为字符串.
我怎样才能得到的地址ch通过cptr使用cout?
dir*_*tly 15
重载分辨率选择ostream& operator<<(ostream& o, const char *c);用于打印C风格字符串的分辨率.您希望ostream& operator<<(ostream& o, const void *p);选择其他人.你最喜欢这里的演员:
cout << static_cast<void *>(cptr) << endl;
Run Code Online (Sandbox Code Playgroud)
cout如果收到一个字符串就打印一个字符串char *,就像那样简单
下面是重载operator <<的ostream:
ostream& operator<< (bool val);
ostream& operator<< (short val);
ostream& operator<< (unsigned short val);
ostream& operator<< (int val);
ostream& operator<< (unsigned int val);
ostream& operator<< (long val);
ostream& operator<< (unsigned long val);
ostream& operator<< (float val);
ostream& operator<< (double val);
ostream& operator<< (long double val);
ostream& operator<< (const void* val);
ostream& operator<< (streambuf* sb);
ostream& operator<< (ostream& ( *pf )(ostream&));
ostream& operator<< (ios& ( *pf )(ios&));
ostream& operator<< (ios_base& ( *pf )(ios_base&));
ostream& operator<< (ostream& out, char c );
ostream& operator<< (ostream& out, signed char c );
ostream& operator<< (ostream& out, unsigned char c );
//this is called
ostream& operator<< (ostream& out, const char* s );
ostream& operator<< (ostream& out, const signed char* s );
ostream& operator<< (ostream& out, const unsigned char* s );
Run Code Online (Sandbox Code Playgroud)
如果您想要地址,您需要:
ostream& operator<< (const void* val);
Run Code Online (Sandbox Code Playgroud)
所以你需要施展const void*.
| 归档时间: |
|
| 查看次数: |
6086 次 |
| 最近记录: |