【问题标题】:std::endl in a string variable?std::endl 在字符串变量中?
【发布时间】:2017-11-21 13:29:47
【问题描述】:

嗨,我想在一个字符串中保存多行。我得到了一个字符串 logstring,我想保存 multiplay 错误日志,稍后我可以将其打印在 txt 文件中或作为控制台输出。是否有可能使用 endl 格式化字符串变量?我搜索了互联网,但我只找到了

cout << "" << endl;

现在我的想法是:

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

这样的事情是可能的还是没有办法格式化字符串变量?后来我想将它们打印到 log.txt 文件中?这样的字符串可以用吗?

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

文本文件应如下所示

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

有可能得到这样的结果还是我必须单独打印所有行?

【问题讨论】:

  • `logstring = logstring + "\n" + "Error Message" + "\n" + "Number" ...;
  • stringstream?
  • 全部为您解答,"\n" 已修复

标签: c++ string std endl


【解决方案1】:

不要忘记std::endl 添加一个新行并且刷新缓冲区。

如果您只是想要新行 \n,请将它们添加到您的字符串中,使用 + 或将它们流式传输到流中,使用 &lt;&lt; '\n'

例如,

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

【讨论】:

    【解决方案2】:

    这是不可能的。请改用logstring += "\n";

    【讨论】:

      【解决方案3】:

      std::endl 不仅是 \n(换行符)字符,而且还刷新流。

      如果您在“文本模式”下打开文件,您的操作系统应将\n 替换为正确的平台特定行尾字符(序列)。所以简单地附加一个\n 应该没问题。 Portable end of line (newline)

      另请注意,默认情况下,标准输入和输出是在文本模式下使用 msvc 打开的。

      【讨论】:

        【解决方案4】:

        要分隔字符串中的行,您应该使用换行符'\n'

        例如

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

        至于std::endl 那么它是一个声明为类似的函数

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

        就是所谓的流操纵器。这个语句中的例子

        std::cout << std::endl;
        

        使用了operator &lt;&lt;,它接受指向函数的指针作为参数。

        你不能用函数指针std::endl连接一个字符串,如果你这样做了,它就没有意义了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-10-31
          • 2014-01-19
          • 2015-04-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多