当前位置:  开发笔记 > 编程语言 > 正文

返回字符串的C++函数不起作用,除非涉及到endl ......?

如何解决《返回字符串的C++函数不起作用,除非涉及到endl?》经验,为你挑选了1个好方法。

我在一个返回字符串的类中有一个函数.在这个函数中,我只能cout< 在return语句之前添加函数时才能使它工作 .知道为什么会这样,或者我如何解决它?我在Mac上用Eclipse运行它

在"main.cpp"中:

#include 
#include 
#include 
#include 
#include 
#include "Braid.h"
using namespace std;

static int size=3;

int main(){  
Braid * b1 = new Braid(size);
b1->setCanon();//creates canonical braid. 

cout<<"a ";
cout<getName()<

在"Braid.h"中:

  public:  
        Braid(int);  
        void setCanon();  
        string getName(); 
    };  

在"Braid.cpp"中:

string Braid::getName(){  
    string sName="";  

    /* body commented out
    for(int i=0; i

当我运行我的主代码时,没有注释该函数的主体,我得到的输出是
"a 0 | 0 | 12 | 12 | 0 | 0 | 2 | 1 | 1 | 1 | 1 | 2 |"

它返回的"名称"是正确的,但它没有通过函数调用.如果我取消注释该//cout<行,该函数可以工作,我的输出是
"a 0 | 0 | 12 | 12 | 0 | 0 | 2 | 1 | 1 | 1 | 1 | 2 |
b"

在注释掉函数的主体后,它只创建一个空字符串,并返回它,我的输出只是"a"然后如果我添加endl,我得到预期的"a b".

我究竟做错了什么?有什么东西跟endl一样,我错过了吗?



1> Nitin Bhide..:

实际上getName()函数可能正常工作.但是,cout'缓存'输出(即当它的内部文本缓冲区已满时,它会在屏幕上打印输出).'endl'刷新缓冲区并强制cout将文本(在缓存中)转储到屏幕.

在main.cpp中尝试cout.flush()

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有