У меня есть функция внутри класса, которая возвращает строку. Внутри этой функции я могу заставить ее работать, только когда добавляю cout<<endl
к функции перед оператором return. Любая идея, почему это, или как я могу это исправить? Я запускаю это в Eclipse на Mac
В "main.cpp":
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstdlib>
#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<<b1->getName()<<endl;
cout<<" b ";
}
В "Braid.h":
public:
Braid(int);
void setCanon();
string getName();
};
А в "Braid.cpp":
string Braid::getName(){
string sName="";
/* body commented out
for(int i=0; i<height; i++)
{
for(int j=2; j<(width-2); j++)
{
sName += boxes[i][j];
sName += "|";
}
}
*/
//cout<<endl;
return sName;
}
Когда я запускаю свой основной код без тела этой функции, я получаю вывод
"a 0 | 0 | 12 | 12 | 0 | 0 | 2 | 1 | 1 | 1 | 1 | 2 |"
Возвращаемое им «имя» верное, но оно не проходит после вызова функции. Если я раскомментирую строку //cout<<endl
, функция сработает, и мой вывод будет
"a 0 | 0 | 12 | 12 | 0 | 0 | 2 | 1 | 1 | 1 | 1 | 2 |
б "
После закомментирования тела функции, чтобы она только создала пустую строку и вернула ее, мой вывод будет только «a», тогда, если я добавлю endl обратно, я получу ожидаемое «ab».
Что я делаю не так? Что-то, что приходит с endl, что я скучаю?