std::endl in a string variable?

前端 未结 4 2007
青春惊慌失措
青春惊慌失措 2021-01-18 16:03

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.

相关标签:
4条回答
  • 2021-01-18 16:33

    To separate lines in a string you should use the new line escape character '\n'.

    For example

    std::string logstring;
    
    //...
    
    logstring += "Error Message 1 Date";
    logstring += '\n';
    
    logstring += "Error Message 2 Date";
    logstring += '\n';
    
    logstring += "Error Message 3 Date";
    logstring += '\n';
    

    As for std::endl then it is a function declared like

    template <class charT, class traits>
    basic_ostream<charT, traits>& endl(basic_ostream<charT, traits>& os);
    

    It is a so-called stream manipulator. Fo example in this statement

    std::cout << std::endl;
    

    there is used operator << that accepts pointer to the function as an argument.

    You can not concatenate a string with the function pointer std::endl and if you did this somehow it did not make sense.

    0 讨论(0)
  • 2021-01-18 16:34

    std::endl isn't only a \n (newline) character, but it also flushes the stream.

    If you have a file open in 'text-mode', your operating system should replace \n with the correct platform specific end of line character(sequence). So simply appending a \n should be fine. Portable end of line (newline)

    Also note that by default, standard input and output are opened in textmode with msvc.

    0 讨论(0)
  • 2021-01-18 16:38

    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';
    
    0 讨论(0)
  • 2021-01-18 16:39

    It's not possible. Use logstring += "\n"; instead

    0 讨论(0)
提交回复
热议问题