草庐IT

ostream_joiner

全部标签

c++ - iostream vs ostream 有什么不同?

正如书中所说(ExploringC++:TheProgrammer'sIntroductiontoC++):Theistreamheaderdeclaresinputoperators(>>),andostreamdeclaresoutputoperators(不用添加#include就可以完美运行代码:#includeusingnamespacestd;intmain(){cout但是,在本书的例子中:#include#include//why?usingnamespacestd;intmain(){cout所以,iostream,ostream和istream头文件对吗?如果ost

c++ - 带有 std::ostream 的 declval 表达式(用于 SFINAE)

我正在尝试创建一个类型特征类来确定特定类型T可以通过进行流式传输std::ostream的运算符.我使用的是简单的SFINAE技术。最终,我尝试评估替换失败的表达式是:decltype(std::declval()());我的期望是,给定一个实例t类型T和std::ostream实例os,如果表达式os格式不正确,则应发生替换失败。但无论类型如何T显然都不会出现替换失败。.即使我只是声明typedef使用上述decltype表达式,在SFINAE的上下文之外,它可以愉快地编译,即使T不能与std::ostream一起使用.例如:structFoo{};intmain(){//Thisc

c++ - 带有 std::ostream 的 declval 表达式(用于 SFINAE)

我正在尝试创建一个类型特征类来确定特定类型T可以通过进行流式传输std::ostream的运算符.我使用的是简单的SFINAE技术。最终,我尝试评估替换失败的表达式是:decltype(std::declval()());我的期望是,给定一个实例t类型T和std::ostream实例os,如果表达式os格式不正确,则应发生替换失败。但无论类型如何T显然都不会出现替换失败。.即使我只是声明typedef使用上述decltype表达式,在SFINAE的上下文之外,它可以愉快地编译,即使T不能与std::ostream一起使用.例如:structFoo{};intmain(){//Thisc

c++ - 从空缓冲区构造 `std::ostream` 是否有效?

考虑以下几点:std::ostreamout(nullptr);这合法且定义明确吗?如果我现在这样做呢:out这是否合法且定义明确?如果是这样,大概是一种无操作? 最佳答案 是的,实例化该流是合法且定义明确的。您可以安全地将其与另一个流交换,或者稍后给它一个新指针(这次指向现有缓冲区)。输出操作本身确实是空操作。原因如下:构造没有非空前置条件,只有这个后置条件:[C++11:27.7.3.2/2]:Postcondition:rdbuf()==sb.有趣的是,它明确指出不得对sb执行任何操作。在构造函数中:[C++11:27.7.3

c++ - 从空缓冲区构造 `std::ostream` 是否有效?

考虑以下几点:std::ostreamout(nullptr);这合法且定义明确吗?如果我现在这样做呢:out这是否合法且定义明确?如果是这样,大概是一种无操作? 最佳答案 是的,实例化该流是合法且定义明确的。您可以安全地将其与另一个流交换,或者稍后给它一个新指针(这次指向现有缓冲区)。输出操作本身确实是空操作。原因如下:构造没有非空前置条件,只有这个后置条件:[C++11:27.7.3.2/2]:Postcondition:rdbuf()==sb.有趣的是,它明确指出不得对sb执行任何操作。在构造函数中:[C++11:27.7.3

c++ - std::vector : 无法将 'std::ostream {aka std::basic_ostream<char>}' 左值绑定(bind)到 'std::basic_ostream<char>&&'

我在尝试做一些简单的事情时遇到了一个令人困惑的错误消息std::cout{1,2,3};上面写着cannotbind'std::ostream{akastd::basic_ostream}'lvalueto'std::basic_ostream&&'intmain(){std::cout{1,2,3};}(使用gcc-4.8.1和-std=c++11测试)SO有类似的问题,例如Overloadingoperator&&’,这是关于一些具有嵌套类的用户定义类。对于该问题的公认答案,还有一项工作。但我不知道这是否适用于std::vector。谁能解释一下为什么std::vector会出现这

c++ - 实现无操作 std::ostream

我正在考虑创建一个日志记录类,其中包含Info、Error等可以配置输出到控制台、文件或无处的成员。为了提高效率,我想避免格式化将被丢弃的消息的开销(即不以详细模式运行时的信息消息)。如果我实现一个自定义的std::streambuf输出到任何地方,我想std::ostream层仍将执行所有格式化。任何人都可以建议一种方法来获得真正的“空”std::ostream,从而避免对使用传递给它的参数做任何工作? 最佳答案 一个swiftgoogle想出了这个可能有用的例子。我不提供任何保证,除了它编译和运行:-)#include#incl

c++ - 创建一个将 ostream 作为参数并写入该流的打印函数

我目前正在回答有关C++中运算符重载的练习题。我有一个问题:创建一个包含int的简单类,并将operator+作为成员函数重载。还提供一个print()成员函数,该函数将ostream&作为参数并打印到该ostream&。测试您的类(class)以证明它可以正常工作。我可以创建类并编写operator+函数,但我真的不明白问题的第二部分。到目前为止,在我对c++的研究中,我还没有真正遇到过ostream,因此我不确定是否可以明确地创建这样一个流。我试过使用:std::ostreamo;但是这会产生错误。有人可以请教我应该如何创建这个功能吗? 最佳答案

c++ - 使用 ostream 格式化整数输出

我正在尝试使用cout找到%2d的等价项格式。我该怎么做? 最佳答案 header包含流操纵器setw:cout您可能还对setfill感兴趣:cout将用0而不是空格填充。 关于c++-使用ostream格式化整数输出,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2650244/

c++ - ostream::write 或 ostream::operator<< 在什么情况下会失败?

在我的C++代码中,我不断地将不同的值写入文件。我的问题是,考虑到文件已成功打开这一事实,如果在任何情况下write或 最佳答案 失败原因太多,无法一一列举。可能的是:分区终于满了用户超出了他的磁盘配额分区已被粗暴地卸载分区已损坏(文件系统错误)磁盘发生物理故障...DoIneedtocheckeverysinglecallofwriteor如果您希望您的程序对故障具有弹性,那么肯定会。如果您不这样做,则仅表示您正在写入的数据可能会或可能不会被写入,这等于说您不关心它。注意:您可以设置std::ostream::exceptions