草庐IT

c++ - 更改 std::endl 以输出 CR+LF 而不是 LF

我正在Linux平台上编写一个程序,该程序生成的文本文件将不可避免地在Windows平台上查看。现在,将std::endl传递到ostream中仅为换行符生成CR字符。当然,这些文本文件在MS记事本中看起来是错误的。有没有办法更改std::endl,使其使用CR+LF作为换行符而不是LF?我知道我可以编写自己的自定义操纵器,例如win_endl,用于生成我自己的换行符,但我在很多地方使用了std::endl符号和许多程序员一样,倾向于做需要尽可能少的工作的事情。我可以简单地重载std::endl来生成CR+LF,还是为了可维护性这是一个愚蠢的想法?注意:我查看了thisquestion

c++ - 更改 std::endl 以输出 CR+LF 而不是 LF

我正在Linux平台上编写一个程序,该程序生成的文本文件将不可避免地在Windows平台上查看。现在,将std::endl传递到ostream中仅为换行符生成CR字符。当然,这些文本文件在MS记事本中看起来是错误的。有没有办法更改std::endl,使其使用CR+LF作为换行符而不是LF?我知道我可以编写自己的自定义操纵器,例如win_endl,用于生成我自己的换行符,但我在很多地方使用了std::endl符号和许多程序员一样,倾向于做需要尽可能少的工作的事情。我可以简单地重载std::endl来生成CR+LF,还是为了可维护性这是一个愚蠢的想法?注意:我查看了thisquestion

c++ - 如果 std::endl 是一个函数,它如何不使用任何括号?

问题几乎在标题中。根据C++Reference,std::endl实际上是一个函数。查看中的声明,这个可以验证。但是,当您使用std::endl,你不使用std::endl().相反,您使用:std::cout事实上,如果你使用std::endl(),编译器需要更多参数,如上面的链接所述。有人愿意解释一下吗?std::endl有什么特别之处??我们可以实现调用时也不需要任何括号的函数吗? 最佳答案 std::endl是声明的函数模板(27.7.3.8):templatebasic_ostream&endl(basic_ostream

c++ - 如果 std::endl 是一个函数,它如何不使用任何括号?

问题几乎在标题中。根据C++Reference,std::endl实际上是一个函数。查看中的声明,这个可以验证。但是,当您使用std::endl,你不使用std::endl().相反,您使用:std::cout事实上,如果你使用std::endl(),编译器需要更多参数,如上面的链接所述。有人愿意解释一下吗?std::endl有什么特别之处??我们可以实现调用时也不需要任何括号的函数吗? 最佳答案 std::endl是声明的函数模板(27.7.3.8):templatebasic_ostream&endl(basic_ostream

iostream 的 C++ 包装器类,使用流修饰符,如 std::endl 和 operator<<

这个问题在这里已经有了答案:std::endlisofunknowntypewhenoverloadingoperator(6个答案)关闭9年前。我目前正在为std::stringstream编写包装器我想转发所有operator通过我的类(class)调用std::stringstream.这现在工作得很好(感谢这个问题:wrapperclassforSTLstream:forwardoperator),但它仍然存在一个问题。假设我有以下代码:classStreamWrapper{private:std::stringstreambuffer;public:templatevoidw

c++ - std::endl 的结构

这个问题在这里已经有了答案:Howdoesstd::endlnotuseanybracketsifitisafunction?(3个答案)关闭5年前。我是C++的新手,我对std::endl感到困惑。在尝试理解std::endl是什么时,我遇到了一些资源,这些资源告诉我它是一个函数。但是,一个函数怎么能去掉括号呢?

c++ - endl 是什么类型的函数?我如何定义类似 endl 的东西?

这个问题在这里已经有了答案:User-definedOutputStreamManipulatorsinC(3个答案)关闭6年前。我是C++的新手,所以endl用于结束行作为cout我在网络上的研究告诉我这是一个函数,如果是的话,为什么我们可以在不使用“();”的情况下调用它我如何声明这样的函数,让我们假设我想创建一个函数,每次我要求输入时都整理控制台stringain(){return":?";}现在不必像这样每次都使用它cout我希望能够将它用作cout就像endl一样,我知道“()”并不多,这并不能真正节省大量时间,但我问这个问题基本上是为了弄清楚为什么endl可以做到这一点。

c++ - 可变参数模板函数:没有匹配的调用函数,std::endl

在我的代码中,我使用可变参数模板函数进行日志记录。但是当我使用std::endl作为参数时,我得到以下编译器错误:Error:nomatchingfunctionforcallto'LOG_ERROR(constchar[14],int&,)'LOG_ERROR("Sumofx+y=",z,std::endl);note:candidate:'voidLOG_ERROR()'inlinevoidLOG_ERROR(){note:candidateexpects0arguments,3provided我的代码:#includeinlinevoidLOG_ERROR(){std::cout

c++ - 为什么 std::endl 会生成这个神秘的错误消息?

如果我尝试编译以下代码,我会得到以下编译器错误(请参阅代码。)如果删除了std::endl,它编译时不会出错。#include#include#includenamespacedetail{templatevoidprint(std::ostream&stream,constT&item){streamvoidprint(std::ostream&stream,constHead&head,Tail&&...tail){detail::print(stream,head);detail::print(stream,std::forward(tail)...);}}templatevoi

c++ - std::endl << std::flush 有目的吗?

std::flush紧接在std::endl用于我正在查看的遗留代码之后。当我第一次看到这个时,我的想法是查看std::endl和std::flush的描述是多余的:http://en.cppreference.com/w/cpp/io/manip/endlhttp://en.cppreference.com/w/cpp/io/manip/flush这是我在遗留源代码中看到的示例:std::cout但是,由于多年来许多高级软件开发人员都看过这段代码,我想知道我是否遗漏了一些细节。在std::endl之后添加std::flush有什么意义吗? 最佳答案