草庐IT

prinf-cout

全部标签

c++ - 为什么语句 “cout << '\\\\';” 不会失败?

源代码如下。cout声明cout调用类ostream的以下函数._Myt&__CLR_OR_THIS_CALLoperator我知道写'\\\\'这个表达式很奇怪,但我不明白为什么它不会失败。结果如何解释? 最佳答案 这是一个多字rune字,类型为int。[lex.ccon]/2:Anordinarycharacterliteralthatcontainsmorethanonec-charisamulticharacterliteral.Amulticharacterliteral,oranordinarycharacterlite

c++ - 删除cout;删除cin;不要给出编译错误 - 标准库中的缺陷?

下面会报编译错误吗?deletecout;deletecin;答案是:没有。这是标准库中流类的实现中的一个缺陷。它们具有以下到void*的转换函数type,表示所有流对象都可以隐式转换为void*:operatorvoid*()const;这通常非常有用,因为它可以让我们写veryidiomaticloop,比如说,从文件中读取输入时。但同时,它允许用户编写deletestream。正如我所说,您可以删除任何流对象。所以所有这些都是允许的:deletess;//declarestd::stringstreamss;deleteiss;//declarestd::istringstrea

c++ - 将 cout 分配给变量名

在ANSIC++中,如何将cout流分配给变量名?我想要做的是,如果用户指定了输出文件名,我将输出发送到那里,否则将其发送到屏幕。所以像:ofstreamoutFile;if(outFileRequested)outFile.open("foo.txt",ios::out);elseoutFile=cout;//WillnotcompilebecauseoutFiledoesnothavean//assignmentoperatoroutFile我也尝试将其作为宏函数:#defineOUTPUToutFileRequested?outFile:coutOUTPUT但这也给了我一个编译器

c++ - 在多个线程中使用 std::cout

我在c++11中编写了一个简单的程序来测试Thread,但是std::cout并没有像我预期的那样工作。classPrinter{public:voidexec(){mutexm;m.lock();cout部分结果:Hello11376Hello16076Hello16076HelloHello1137616076Hello11376,....我使用互斥锁来锁定线程,所以我不明白为什么两个线程同时执行std::cout。它让我觉得很奇怪。谁能解释发生了什么!?! 最佳答案 线程正在使用不同mutex实例,因为mutex是exec()

c++ - 如何在运行时禁用 cout 输出?

我经常在代码中的许多不同位置使用cout进行调试,然后我感到沮丧并手动注释所有这些。有没有办法在运行时抑制cout输出?更重要的是,假设我想抑制所有cout输出,但我仍然想在终端中看到1个特定输出(比如说程序的最终输出)。是否可以使用“其他方式”打印到终端以显示程序输出,然后在抑制cout时仍然看到使用此“其他方式”打印的内容? 最佳答案 当然可以(examplehere):intmain(){std::cout输出:FirstmessageLastmessage这是因为将流置于fail状态会使其静默丢弃任何输出,直到故障位被清除。

c++ - "std::cout << std::endl;"如何编译?

大多数IOstreammanipulators是具有以下签名的常规函数​​:std::ios_base&func(std::ios_base&str);然而,一些操纵器(包括最常用的操纵器-std::endl和std::flush)是以下形式的模板:templatestd::basic_ostream&func(std::basic_ostream&os);那么,std::cout的编译过程是怎样的?假设以下示例失败,则成功:$catmain.cpp#includeintmain(){automyendl=std::endl;std::cout很明显,上下文(在std::cout中)有

c++ - 在 "cout"语句中调用具有 "cout"语句的函数

我在搞乱代码时遇到了这种相当模糊的行为,这是示例:#includeusingnamespacestd;intprint(void);intmain(void){cout在我的代码中,带有注释的语句//这一行应该打印出来TheLuckyNo:3,而是打印了No:TheLucky3。是什么导致了这种行为?这是否与C++标准有关,或者它的行为因一种编译器而异? 最佳答案 未指定函数参数的评估顺序。你的行在编译器看来是这样的:operator语句中的主要调用是以endl作为参数的调用。未指定第二个参数endl是先计算还是较大的子表达式计算:

c++ - 错误 : 'cout' : undeclared identifier; though I've included iostream header file in program

我正在尝试编译下面的简单程序。但是,它没有编译并给出错误:errorC2065:'cout':undeclaredidentifier我想问你,为什么我已经在其中包含了iostream头文件,这个程序却不能运行?#includevoidfunction(int){cout提前致谢。 最佳答案 cout流在std命名空间中定义。所以命名它你写:std::cout如果你想把它缩短为cout那么你可以写usingnamespacestd;或usingstd::cout;在写cout之前。任何好的文档来源都会告诉您哪个命名空间包含一个对象。

c++ - 什么可以解释 std::cout 不显示任何内容?

无论出于何种原因,std::cout不会在我的应用程序中显示任何内容。下面是我的开发环境的描述。我正在使用QtCreator开发一个Qt应用程序。由于无法从我的工作站(XP64)启动QtCreator,我目前正在使用VisualStudio2008和Qt插件(通过导入.pro项目文件)开发它。一切似乎都很好,并且应用程序正常工作。在某些情况下(取决于命令行参数),我不想启动HIM,只是为了在CLI中显示几句话(例如命令行所需的参数)。我没有收到任何错误,但没有显示任何内容。我确信运行的相应代码是(经典)以下:std::cout你知道为什么什么都没有显示吗?

c++ - 编译时等效的 std::cout,或 c++11 中编译时常量值的 static_assert 字符串化

有没有办法打印constexpr的值?或#defined编译时的值?我想要std::cout的等价物,或某种方式来做类似的事情constexprintPI_INT=4;static_assert(PI_INT==3,const_str_join("PI_INTmustbe3,not",const_int_to_str(PI_INT)));编辑:我可以使用constexpr进行一些基本的编译时打印s,至少在gcc上做类似的事情templatestructdisplay_non_zero_int_value;templatestructdisplay_non_zero_int_value{