原创 TIPS(不断增加中)

2008-6-14 11:06 1896 3 3 分类: 软件与OS

1、\n和endl的区别是什么?


    \n是C中的控制字符,表示换行,可以作为一个字符来进行操作(等于,不等于的比较)。endl是C++中行结束符,只能用于输出流中。就是推荐使用的,属于C++的新特性,


    打开你的编译器include目录中的ostream.h文件,你就回看到类似的如下代码:  
  ...   ...  
  ...   endl(ostream&   os)   {   os   <<   '\n'   <<   flush;   }  
  ...   ...  
  也就是说,endl比'\n'要多了一个“刷新”流里的缓冲的flush操作。  
  以文件输出流(ofstream)为例:当流的缓冲区未满时,写入'\n'的是不会马上写到文件里的,但执行endl会“强行”把缓冲区的内容写入文件中。所以,endl不仅换行,还刷新流缓冲


2、string 类中的size() 函数与length()有区别吗?


    实现的代码如下:


    size_type  
              size()   const   {   return   _M_rep()->_M_length;   }   
    
    size_type  
              length()   const   {   return   _M_rep()->_M_length;   }   
    
    另外Size是字节数,Length是字符数。看你用的是单字节字符,还是多字节字符。string.size()   =   string.lenth()   *   sizeof(string.item)


    还有一点,提供Size应该是为了提供容器兼容接口。length()是考虑到传统C函数strlen而对应设置的,而size()是考虑到string作为一个STL容器,应该具有的common   member.

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条