草庐IT

prinf-cout

全部标签

c++ - 是否可以将 cout 或 fout 传递给函数?

我正在尝试找到一种将fout或cout传递给函数的方法。我意识到有一些逻辑上简单的方法来处理这个问题,比如将ifs放在任何输出数据的函数中,甚至只是双向编写函数。然而,这似乎是原始和低效的。我不相信这段代码会起作用,我把它放在这里是为了确保很容易看到我“想要”做什么。请注意,我正在学习使用c++的算法设计类(class),我绝不是经验丰富的c++程序员。我的类(class)仅限于使用您看到的标题。#include#include#includeusingnamespacestd;voidhelloWorld(char);ofstreamfout;intmain(){fout.open(

c++ - 深入了解事物是如何打印到屏幕上的(cout、printf)以及我似乎在教科书上找不到的真正复杂事物的起源

我一直想知道这个,但仍然没有找到答案。每当我们使用“cout”或“printf”时,屏幕上究竟是如何打印的?文本是如何出现的......(这里可能是一个相当模糊的问题,不管你给我什么都不好用。)。那么基本上这些功能是如何制作的?..它是组装吗?如果是这样,那从哪里开始?这带来了更多的问题,比如他们到底是如何制作openGl/directx函数的......分解它,人们分解它。:) 最佳答案 这是一个带有缩写的场景:printf或cout将字符放入用户程序地址空间的缓冲区中。最终缓冲区会填满,或者printf可能要求提前清空缓冲区。无

c++ - 如何 'cout' double 值的正确小数位数?

我需要帮助来保持double的精度。如果我将文字分配给double,则实际值会被截断。intmain(){doublex=7.40200133400;std::cout对于上面的代码片段,输出是7.402有没有办法防止这种类型的截断?或者有没有办法准确计算double的float?例如,number_of_decimal(x)会给出11,因为输入在运行时是未知的,所以我不能使用setprecision()。我想我应该把我的问题改成:如何在不截断float的情况下将double转换为字符串。即#include#include#includetemplatestd::stringtype_

c++ - 如何删除放入 std::cout 的最后一个字符?

是否可以在不使用WinAPI的情况下在Windows上运行? 最佳答案 您不能删除最后一个字符。但是你可以通过覆盖最后一个字符来获得类似的效果。为此,您需要通过输出'\b'(退格)字符来向后移动控制台光标,如下所示。#includeusingnamespacestd;intmain(){cout所以输出将是H 关于c++-如何删除放入std::cout的最后一个字符?,我们在StackOverflow上找到一个类似的问题: https://stackoverf

c++ - 为什么 printf 的相同表达式的输出与 cout 不同?

我正在使用VisualC++2012并从命令行编译以下文件:#includeintmain(){printf("%.5f",18/4+18%4);return0;}与MSVCRT.LIB而不是LIBCMT链接以避免运行时错误R6002。该程序的输出值为0.00000。但是,如果我在C++中执行完全相同的操作#includeusingnamespacestd;intmain(){cout现在,它打印出6,就像它应该的那样。有什么区别?是与语言本身(C与C++)还是输出方法(cout与printf)有关,还是只是MSVC的一个怪癖? 最佳答案

c++ - AllocConsole() 不显示 cout

我有一个DLL,我在其中使用AllocConsole()和cout来显示数据以进行调试。它曾经可以正常工作,但由于我将编译器(VisualStudio2012)更新到最新版本,因此dll仅显示控制台,但不显示打印/输出。我不知道为什么会这样。有什么想法吗?我的部分代码__declspec(dllexport)INTAPIENTRYDllMain(HMODULEhDLL,DWORDReason,LPVOIDReserved){switch(Reason){caseDLL_PROCESS_ATTACH:AllocConsole();DisableThreadLibraryCalls(hDL

c++ - 将 cout 和 stdout 都重定向到 C++ 中的字符串以进行单元测试

我正致力于在单元测试中获取一些遗留代码,有时感知现有程序行为的唯一方法是从控制台输出。我在网上看到很多关于如何将标准输出重定向到C++中的另一个文件的示例,但是有没有办法可以将它重定向到内存中的流,这样我的测试就不必依赖磁盘了?我想将遗留代码发送到stdout的任何内容放入std::string中,以便我可以轻松地.find输出。编辑遗留代码太糟糕了,它使用了cout的混合体和printf.这是我目前所拥有的:voidTestSuite::setUp(void){oldStdoutBuf=std::cout.rdbuf();std::cout.rdbuf(consoleOutput.r

c++ - #include<iostream> 存在,但我收到错误 : identifier "cout" is undefined. 为什么?

我通过书籍学习C++和COM。在IDEMSVisualStudio2012中,我创建了新的空C++项目,并向其中添加了一些现有文件。我的CPP文件包含#include行,但在编辑器中我收到了这样的消息:Error:identifier"cout"isundefined结束Error:identifier"endl"isundefined代码:#include#include"interfaces.h"//unknown.h,objbase.h,initguid.hclassCA{//:publicIX,IY{public://ConstructorCA();//Destructor~C

c++ 强制 std::cout 刷新(打印到屏幕)

我有如下代码:std::cout然而,问题是输出#1和输出#2通常(实际上)同时出现。也就是说,在computations()返回之前,输出#1通常不会打印到屏幕上。由于输出#1的全部目的是表明后台正在发生某些事情(从而鼓励用户耐心等待),所以这个问题并不好。有没有办法在computations()调用之前强制打印std::cout缓冲区?或者,是否有其他方法(使用std::cout以外的其他方法)打印到标准输出来解决此问题? 最佳答案 只需插入std::flush:std::cout还要注意插入std::endl写入换行符后也会刷

c++ - 为什么 printf 和 std::cout 的输出不同?

我尝试了以下C++代码。但是,printf和std::cout的输出是不同的。为什么?structFoo{inta;intb;intc;};intmain(){printf("%d\n",&Foo::c);//Theoutputis8std::cout 最佳答案 printf("%d\n",&Foo::c):这是未定义的行为,如&Foo::c不是整数,而是指向成员的指针(但实际上,编译器通常将指向数据成员的指针存储为偏移量,并且8是Foo::c的偏移量,打印8)。std::cout:这将打印值&Foo::c.由于iostream没有