您好我想在字符串中保存多个行。我有一个字符串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
...
是否可能这样做或者我必须单独打印所有行?
答案 0 :(得分:1)
不要忘记std::endl
添加新行并刷新缓冲区。
如果您只是想要新的行\n
,请使用+
将其添加到字符串中,或使用<< '\n'
将其流式传输到流中。
例如,
std::string logstring;
logstring = logstring + "Error Message" + "Number" + "Time + Date";
logstring += '\n';
答案 1 :(得分:0)
这是不可能的。请改用logstring += "\n";
答案 2 :(得分:0)
std::endl
不仅仅是\n
(换行符)字符,但它也会刷新流。
如果您在文本模式&#39;中打开了文件,则您的操作系统应使用正确的平台特定行尾字符(序列)替换\n
。所以简单地追加一个\n
应该没问题。 Portable end of line (newline)
另请注意,默认情况下,使用msvc在文本模式中打开标准输入和输出。
答案 3 :(得分:0)
要分隔字符串中的行,您应该使用新的换行符'\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
连接起来,如果你以某种方式这样做就没有意义了。