关于cout的一个疑问

一个人单干 2009-03-31 07:51:53
对于字符类型以外的数组与指针,使用cout输出的是地址,但对于字符数组与字符指针,用cout输出的是字符串。

这是为什么?谁能用cout的函数原型解释一下
...全文
79 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengde007 2009-03-31
  • 打赏
  • 举报
回复
cout是iostream类的一个对象,它的一个成员operator<<运用了重载机制,因此能承受多种类型
liliangbao 2009-03-31
  • 打赏
  • 举报
回复
cout原型不知,但是我理解是:
cout输出字符数组与字符指针就是输出字符串,可能是和传统的c输出函数统一吧!毕竟C++是C的升级版~
ydntlk 2009-03-31
  • 打赏
  • 举报
回复
cout是ostream的类对象。ostream是一个类模板。
ostream重载了操作符<<,可以输出字符串。
yangqidong 2009-03-31
  • 打赏
  • 举报
回复
cout不是函数,是一个预定义的对象
对输出起作用的实际是<<符号的重载函数,这个函数接受很多种类型参数,建议看看运算符重载
Paradin 2009-03-31
  • 打赏
  • 举报
回复
操作符重载
库定义的行为

basic_ostream& operator<< (bool& val );
basic_ostream& operator<< (short& val );
basic_ostream& operator<< (unsigned short& val );
basic_ostream& operator<< (int& val );
basic_ostream& operator<< (unsigned int& val );
basic_ostream& operator<< (long& val );
basic_ostream& operator<< (unsigned long& val );
basic_ostream& operator<< (float& val );
basic_ostream& operator<< (double& val );
basic_ostream& operator<< (long double& val );
basic_ostream& operator<< (void*& val );
basic_ostream& operator<< (basic_streambuf<charT,traits>* sb );
basic_ostream& operator<< (basic_ostream& ( *pf )(istream&));
basic_ostream& operator<< (basic_ios<charT,traits>& ( *pf )(basic_ios<charT,traits>&));
basic_ostream& operator<< (ios_base& ( *pf )(ios_base&));


template <class charT, class traits>
basic_ostream<charT,traits>& operator<< (basic_ostream<charT,traits>& os, charT ch );

template <class charT, class traits>
basic_ostream<charT,traits>& operator<< (basic_ostream<charT,traits>& os, char ch );

template <class charT, class traits>
basic_ostream<charT,traits>& operator<< (basic_ostream<charT,traits>& os, const charT* str );

template <class charT, class traits>
basic_ostream<charT,traits>& operator<< (basic_ostream<charT,traits>& os, const char* str );

// template specializations:

template <class traits>
basic_ostream<char,traits>& operator<< (basic_ostream<char,traits>& os, char ch );

template <class traits>
basic_ostream<char,traits>& operator<< (basic_ostream<char,traits>& os, signed char ch );

template <class traits>
basic_ostream<char,traits>& operator<< (basic_ostream<char,traits>& os, unsigned char ch );

template <class traits>
basic_ostream<char,traits>& operator<< (basic_ostream<char,traits>& os, const char* str );

template <class traits>
basic_ostream<char,traits>& operator<< (basic_ostream<char,traits>& os, const signed char* str );

template <class traits>
basic_ostream<char,traits>& operator<< (basic_ostream<char,traits>& os, const unsigned char* str );
一个人单干 2009-03-31
  • 打赏
  • 举报
回复
发重了 大家去这个帖子吧 双倍给分
http://topic.csdn.net/u/20090331/19/06090f08-e662-4e40-8306-fe4f3863a1ef.html

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧