草庐IT

C++单元测试检查输出是否正确

如果我想编写自己的test.cpp来检查另一个.cpp文件是否按照我希望的方式输出,是否可以在不显式打印的情况下执行此操作?换句话说,有没有什么assert(output_of_file_being_tested,"thisisthecorrectoutput");其中output_of_file_being_tested是应该被“cout”的东西。 最佳答案 解决方案不是对输出流进行硬编码。以某种方式将对std::ostream的引用传递给您的代码,并使用std::stringstream在测试环境中收集输出。例如,这是您的“另一

c++ - 为什么 cout 立即输出?

cout是缓冲流。这意味着数据将被写入缓冲区,并在流被刷新、程序终止或缓冲区完全填满时打印。我做了一个小程序来测试它是如何工作的,但我不明白为什么它甚至在满足上述任何条件之前就打印出来。#include#includeusingnamespacestd;intmain(){cout运行时,在循环开始之前输出“Test”。为什么我的输出直到程序终止才被缓冲? 最佳答案 在here上对此进行了很好的讨论.来自其中一个答案:EveryC++streamusesanassociatedstreambufferobjecttoperformb

C++1y/C++14 : Converting static constexpr array to non-type template parameter pack?

假设我有一个静态存储持续时间的constexpr数组(已知范围):constexprTinput[]=/*...*/;我有一个需要打包的输出类模板:templatestructoutput_template;我想像这样实例化output_template:usingoutput=output_template;一种方法是:templatestructmake_output_template{templatestaticconstexproutput_templatef(std::index_sequence){return{};};usingtype=decltype(f(std::m

C++ 编程 : Assignment's Output is Marginally Off

好的,任务是从名为tickets.txt的文件中获取输入,并输出售出的门票总数以及总收入。文本文件中的值在两列中输入(1)售出的门票数量,以及(2)每个门票类别的价格。文本文件如下所示:25057501002800050357502518750这是我想出的代码...#include#include#includeusingnamespacestd;/*ProgramName:Ticket_Sales.cpp*Date:May2,2018*Purpose:CalculateTotalTicketSales*/intmain(){{ifstreaminFile;floatticket_co

c++ - 如何在不四舍五入的情况下在C++中显示固定数量的数字

我有这段代码(非常基本):#include#includeusingnamespacestd;intmain(){floata=0.0,b=0.0,c=0.0;cout>a;cout>b;cout当我输入两个数字(例如,a=513和b=791)时,我得到0.65。计算器显示正确答案是0.648。我知道我的代码将最后一个十进制数四舍五入,但这不是我想要的。我怎样才能让它保持在0.64而不是0.65? 最佳答案 如果您想将值截断到小数点后两位,可以将其乘以100,截断为整数,然后除以100,如下所示:c=a/b;c=floor(100*

c++ - Visual C++ 生成错误 : Failed to register output

所以我有一个正在处理的项目,每次构建时,它都会构建然后执行程序,然后以构建错误结束。为什么会这样?我似乎无法在项目属性中找到它将在构建中执行文件的位置。这有点烦人,而且最终还会产生错误。这是输出的摘录2>Link:2>Generatingcode2>c:\users\d0c\desktop\jlrria.lottery.repo\trunc\hash\hl_hashwrapper.h(277):warningC4706:assignmentwithinconditionalexpression2>Finishedgeneratingcode2>lottery-gui.vcxproj->

c++ - VB换行转义字符?

在C中,我使用"1stline1\n2ndline"作为换行符,但是VB呢?我知道"1stline"&VbCrLf&"2ndline"但它太冗长了,VB中换行符的转义字符是什么?我要打印1stline2ndline我尝试使用\n但无论我运行编译器多少次它总是输出这个1stline\n2ndline有什么想法吗? 最佳答案 您应该使用Environment.NewLine。在Windows上计算为CR+LF,在Unix系统上计算为LF。VB中没有用于CR或LF字符的转义序列。这就是为什么"\n"被逐字处理的原因。所以,Environm

c++ - 两个交替的字符如何高效或者不循环输出?

解释这个问题有点棘手,但假设必须显示两个交替的字符:for(intn=0;n是否有一种单线或更有效的方法来完成上述任务?(即使用类似的setfill())? 最佳答案 我想我会保持简单:staticconstchars[]="XY";for(intn=0;n另一种明显的可能性是一次只写出两个字符:for(intn=0;n 关于c++-两个交替的字符如何高效或者不循环输出?,我们在StackOverflow上找到一个类似的问题: https://stackove

C++ - 奇怪的事情,输入被颠倒了

我发现了一些奇怪的东西,我测试了这段代码:#includeusingnamespacestd;intmain(){inti=0,a[5];cin>>a[i++]>>a[i++]>>a[i++];for(intj=0;j有了这个输入:123然后像这样反转输入:321我认为它的输出应该和这段代码一样:#includeusingnamespacestd;intmain(){inti=0,a[5];cin>>a[i++];cin>>a[i++];cin>>a[i++];for(intj=0;j有没有人遇到过这种情况?谢谢。-编辑-谢谢大家的回答!!! 最佳答案

c++ - DirectX 11 - 计算着色器 : Writing to an output resource

我刚开始在DirectX11中使用计算着色器阶段,在向计算着色器中的输出资源写入时遇到了一些不需要的行为。我似乎只得到零作为输出,据我所知,这意味着在计算着色器中执行了越界读取。(越界写入导致空操作)创建计算着色器组件输入资源首先,我为输入数据创建了一个ID3D11Buffer*。在创建用于输入到计算着色器阶段的SRV时,它作为资源传递。如果输入数据永远不变,那么我们可以在创建SRV后释放ID3D11Buffer*对象,因为SRV将充当资源句柄。但是,我想在每一帧更新输入数据,所以我将保留缓冲区供我使用以进行映射。//CreateabuffertobeboundasComputeSha