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.
文章评论(0条评论)
登录后参与讨论