std::endl in a string variable?

Fabian Patzlaff picture Fabian Patzlaff · Jun 19, 2017 · Viewed 8.9k times · Source

Hi i want to save multiply lines in a string. I got a string logstring and i want to save multiplay error logs which i later can print in a txt file or as a console output. Is there a possibility to use endl to format a string variable? I searched the internet but i only find

cout << "" << endl;

Now my idea was:

std::string logstring;
logstring = logstring + "Error Message" + "Number" + "Time + Date";
logstring += endl;

Is something like this possible or is there no way to format string variables? Later i want to print them to a log.txt file? Is it possible to use a string like this?

std::ofstream logfile;
logfile.open(log.txt);
logfile << logstring;

The text file should look like this

Error Message 1 Date
Error Message 2 Date
Error Message 3 Date
...

Is it possibly to get it like this or do i have to print all lines seperatly?

Answer

doctorlove picture doctorlove · Jun 19, 2017

Don't forget std::endl adds a new line and flushes the buffer.

If you simply want new lines, \n, add them to your string, using + or stream them to a stream, using << '\n'.

For example,

std::string logstring;
logstring = logstring + "Error Message" + "Number" + "Time + Date";
logstring += '\n';