std::endl 在字符串变量中?
std::endl in a string variable?
您好,我想在字符串中保存多行。我得到了一个字符串日志字符串,我想保存多人游戏错误日志,稍后我可以将其打印在 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 += "\n";
代替
std::endl
不仅是一个 \n
(换行符)字符,它还会刷新流。
如果您在 'text-mode' 中打开文件,您的操作系统应将 \n
替换为正确的平台特定行尾字符(序列)。所以简单地附加一个 \n
应该没问题。 Portable end of line (newline)
另请注意,默认情况下,标准输入和输出是使用 msvc 在文本模式下打开的。
不要忘记 std::endl
添加新行 并且 刷新缓冲区。
如果您只是想要换行,\n
,请使用 +
将它们添加到您的字符串中,或者使用 << '\n'
.
将它们流式传输到流中
例如,
std::string logstring;
logstring = logstring + "Error Message" + "Number" + "Time + Date";
logstring += '\n';
要分隔字符串中的行,您应该使用换行符 '\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
,如果您以某种方式这样做,它就没有意义。
您好,我想在字符串中保存多行。我得到了一个字符串日志字符串,我想保存多人游戏错误日志,稍后我可以将其打印在 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 += "\n";
代替
std::endl
不仅是一个 \n
(换行符)字符,它还会刷新流。
如果您在 'text-mode' 中打开文件,您的操作系统应将 \n
替换为正确的平台特定行尾字符(序列)。所以简单地附加一个 \n
应该没问题。 Portable end of line (newline)
另请注意,默认情况下,标准输入和输出是使用 msvc 在文本模式下打开的。
不要忘记 std::endl
添加新行 并且 刷新缓冲区。
如果您只是想要换行,\n
,请使用 +
将它们添加到您的字符串中,或者使用 << '\n'
.
例如,
std::string logstring;
logstring = logstring + "Error Message" + "Number" + "Time + Date";
logstring += '\n';
要分隔字符串中的行,您应该使用换行符 '\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
,如果您以某种方式这样做,它就没有意义。