繁体   English   中英

字符串变量中的std :: endl?

[英]std::endl in a string variable?

嗨,我想在字符串中保存多个行。 我有一个字符串logstring,我想保存多重播放错误日志,我以后可以在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
...

它是否可能像这样或者我必须单独打印所有行?

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

如果你只想要新的行, \\n ,使用<< '\\n'将它们添加到字符串中,使用+或将它们流式传输到流中。

例如,

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

这是不可能的。 使用logstring += "\\n"; 代替

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

如果您以“文本模式”打开文件,则操作系统应使用正确的平台特定行尾字符(序列)替换\\n 所以简单地添加\\n应该没问题。 便携式终端(换行)

另请注意,默认情况下,使用msvc在textmode中打开标准输入和输出。

要分隔字符串中的行,您应该使用新的换行符'\\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 <<接受指向函数的指针作为参数。

你不能将一个字符串与函数指针std::endl ,如果你以某种方式这样做就没有意义了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM