Although they both seem to do the same thing, there is a subtle difference between them.
cout << endl : Inserts a new line and flushes the stream cout << "\n" : Only inserts a new line.
cout << endl;
can be said equivalent to
cout << ‘\n’ << flush;
So cout << “\n” seems performance wise better than cout << endl; unless flushing of stream is required.
Some other differences between endl and \n are:
- endl is manipulator while \n is character.
- endl doesn’t occupy any memory whereas \n is character so It occupy 1 byte memory.
- \n being a character can be stored in a string(will still convey its specific meaning of line break) while endl is a keyword and would not specify any meaning when stored in a string.
- We cannot write endl in between double quotation while we can write \n in between double quotation like
cout<<“\n”; it is right but cout<<“endl”; is wrong.
- We can use \n both in C and C++ but, endl is only supported by C++ and not the C language.
This article is contributed by Akshat Saxena. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above