Różnica między manipulatorem "endl" a znakiem "\n" ?

0

for (int i=0; i<rows;i++)
{
for (int j=0; j<columns;j++)
cout <<znakp;
cout <<endl;
//cout <<"\n";
}

Gdy stosuje w nowej linijce manipulator endl lub znak "\n", wszystko chodzi jak powinno. Gdy zaś napiszę cout<<znakp<<endl; , to po uruchomieniu robi się coś takiego:
x
x
x
x
x
x
x
x
x
Wie może ktoś czemu tak jest?

0
for (int i = 0; i < rows; i++) {
    for (int j = 0; j < columns; j++)
        cout << znakp; // tylko ta instrukcja wykonuje sie w petli
    cout << endl;
    //cout << "\n";
}

Jesli napiszesz cout << znakp << endl albo cout << znakp << "\n", to po kazdym znaku nastapi przejscie do nowej linii.

Sama roznica miedzy \n a endl polega na czyms zupelnie innym: endl poza przejsciem do nowej linii powoduje oproznienie bufora wyjscia.

0

Brakuje ci klamer po forze.

0

Jeśli po pętli for nie ma klamer to wtedy wykonuje się tylko jedna instrukcja. Więc w twoim wypadku wykona się tylko cout <<znakp;

Co do różnicy między \n a endl, to endl powoduje opróżnienie bufora. \n jest szybsze, ale w wypadku crash aplikacji dane które zostały w buforze mogą zostać nie wypisane. Możesz także opróżnić bufor funkcją flush();

1 użytkowników online, w tym zalogowanych: 0, gości: 1