天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

关于endl的一点总结

Posted on 2011-09-23 05:18 hoshelly 阅读(410) 评论(2)  编辑 收藏 引用 所属分类: C++

我们知道,std::cout<<endl是使输入的数强制输出,以前我没发现,今天发现,如果是输入一行数的话,使用这个std::cout<<endl,程序是默认每输出一个数就回车的,而不是排成一行!
请看一下一例:
该程序要求输入长度,然后输出一个四条边都带相同数量星号的矩形。
#include<iostream>
using namespace std;
int main()
{
    
int side,rowPosition,size;
    cout
<<"input the square side: ";//输入矩形的宽度
    cin>>side;
    size
=side;//使长宽的边所带星号数量相同
    while(side>0)//双重循环输出矩形
    {
        rowPosition
=size;
        
while(rowPosition>0)
        
{
            
if(size==side||side==1||rowPosition==1||rowPosition==size)
                cout
<<'*'<<;
            
else
                cout
<<' ';
            
--rowPosition;
        }

        cout
<<'\n';//在这里等一行自然输出后,在利用cout<<‘\n'回车,输出下一行
        --side;
    }

    cout
<<endl;//这里总的强制输出所有输入的字符
      return 0;
    
}

        
        




    

    

程序运行效果如下图,输入8;





如果在程序的每条cout语句中加上<<endl; 那么程序运行的效果(图所限,"end line": inserts a newline into the stream and calls flush.有省略一些)如下:





后注:刚刚在维基百科里查到std::endl的定义,它说,"end line": inserts a newline into the stream and calls flush. 这就是说endl的功能就是强制输出和换行,现在懂了,感谢博友的认真更正,学习了。:)

Feedback

# re: 关于endl的一点总结  回复  更多评论   

2011-09-23 20:44 by Sanae
其实std::endl就是换行,至于刷新输出可能是行缓冲机制(换行就会导致flush)

# re: 关于endl的一点总结  回复  更多评论   

2011-09-23 21:53 by zhenglinbo880531
谢谢关注,多多指教,我刚刚入门。@Sanae

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理