jjzjj

c++ - 使用 fstream 设置精度以输出文件 - double 格式

对于如何使用已打开的fstream将格式化的double输出到文本文件,我找不到答案。目前我的代码是这样做的:intwriteToFile(fstream&f,product_record&p){if(!f){cout其中p是名为product_record的结构,price、tax、sANDh和total都是doubles我试过f但这不起作用。我如何将此double格式设置为小数点后两位的精度。像这样"#.00".我如何使用专门的fstream来实现这一目标?此外,仅供引用,总体任务是简单地读取一个txt文件,将数据存储在一个结构中,将结构添加到一个vector中,然后从结构中读取以

C++排序算法持续时间

我一直致力于计算这些排序算法的持续时间。我将所有排序方法循环2000次,然后将总持续时间除以2000以获得合适的持续时间值。问题是;它没有显示排序方法的特定代码部分所花费的时间的确切值。我的意思是duration变量在程序流中显示递增的值。例如,对于N=10000,insertionSort()给出0.000635,mergeSort()给出0.00836和heapSort()给出0.018485,当我改变这些顺序时,duration仍然通过程序上升,无论算法类型如何。我尝试为每个进程提供不同的持续时间值,但这没有用。有人可以帮助我理解这个问题吗?或者还有其他时间可以衡量风格吗?对不起

c++ - std::cout<< x 之间的区别是什么?和 std::cout<<x<<std::endl;?

我是编程的新手,我昨天开始自学,我得到了一切,但老实说,我不明白两者之间的区别std::cout和std::cout没有人向我解释过这个,我要求保持安全。 最佳答案 endl向流中写入一个换行符,因此后续输出将出现在下一行。它还会刷新流的缓冲区,通常是causingaslow-down.这种刷新意味着99%的时间,endl是一个错误,你应该只写"\n"(或'\n')代替。当您确实想要刷新流时,我认为最好通过调用std::flush来明确说明:std::cout就运行时操作而言,这等同于使用std::endl,但就明确您的意图而言,它

c++ - 有什么办法可以在 C++ 中使可变长度数组成为全局数组吗?

我在一个函数中创建了一个可变长度数组,但是我需要在第二个函数中引用这个数组。当我将声明放在main()上方时出现问题,因为它的长度尚未定义,我的编译器生气了。人们通常如何处理这件事?编辑:到目前为止,这是我的代码。我需要使数组的name[]midterm[]和final[]成为全局的。它们都在student_input()中。#includeusingnamespacestd;voidstudent_input();voidstudent_output();inti,ns;main(){intwidth,height,mult;cout>ns;i=0;while(i>si_name;n

c++ - 继续获取 "error: use of undeclared identifier ' cout' 和错误 : reference to overloaded function could not be resolved

我正在编写一个使用许多不同函数的排序程序,你们都可以从我的声明。但是,当我尝试编译和运行我的程序时,我不断遇到这些相同的错误它们如下:error:useofundeclaredidentifier'cout';didyoumean'count'?couterror:referencetooverloadedfunctioncouldnotberesolved;didyoumeantocallit?couterror:useofundeclaredidentifier'endl';didyoumean'end'?cout我不太确定为什么会出现这些错误....我想我已经包含了我需要的一切为

c++ - OpenCV 3 KNN 实现

您可能知道,OpenCV3中的许多事情都发生了变化。在以前的OpenCV版本中,我曾经这样做过:MattrainData(classes*samples,ImageSize,CV_32FC1);MattrainClasses(classes*samples,1,CV_32FC1);KNNLearning(&trainData,&trainClasses);//learningfunctionKNearestknearest(trainData,trainClasses);//creating//loadinginputimageMatinput=imread("input.jpg");

c++ - 指向指针的引用变量

intmain(){intx=10;int*p=&x;int&y=*p;cout以上是最能解释我的问题的代码。通常,变量引用(&)获取变量的地址并开始引用该变量。我试过通过指针做同样的事情。我定义了一个变量,指针p指向x,引用变量y指向*p。这是否意味着y现在指的是同一个变量x?下一步,我不再通过*p指向x,现在引用变量y会发生什么?它会持有什么。在上面的代码中,cout谁能帮忙解释一下这里的行为。 最佳答案 [注意:这个答案只是关于C++的。在C中,您的代码不应编译。]是的,在你初始化y之后,它指的是x。递增p不会改变这一点——y

c++ - 在 ostream 上使用 std::endl 使我的文件成为二进制文件

我正在从事一个使用libzip的项目。我在c++14工作,我围绕libzip编写了一个小包装器,让我的生活更轻松。我有一个std::ostream对象围绕继承std::streambuf的自定义类构建。此streambuf使用libzip函数写入存档中的文件。一切正常,直到我使用std::endl。当我这样做时,输出文件被我所有的文本阅读器读取为二进制文件(仅写入字符串)。我的文本阅读器检测到它是二进制文件,因为在我使用std::endl的地方有一个NUL字节,任何包含NUL字节的文件都被视为二进制文件。所以我的问题是:这正常吗?我有办法使用std::endl吗?我的代码(已提取,因此

c++ - 外部 "C"时无法使用 cout/endl

我希望有人能帮助我解决这个小问题,因为我一无所获。首先,这里是代码:#include#include#includeusingnamespacestd;extern"C"{#include#include}intmain(){intiQuit;cout它不会让我使用std的东西(即cout、cin、endl等)。只有当我取出所有外部“C”代码时,它才会允许我使用它……这是为什么呢?有办法解决这个问题吗?编辑:抱歉,忘了告诉你确切的错误:它说标识符“cout”未定义谢谢 最佳答案 你的编译环境有问题。该代码没有任何问题。它编译并运行良

c++ - 应该始终使用 std::endl 吗?

在C++Primer(第5版)一书的帮助下,我从C跳转到了C++,其中作者陈述如下:Programmersoftenaddprintstatementsduringdebugging.Suchstatementsshouldalwaysflushthestream.Otherwise,iftheprogramcrashes,outputmaybeleftinthebuffer,leadingtoincorrectinferencesaboutwheretheprogramcrashed.但网上的帖子表明情况并非如此;有人说不断刷新缓冲区对程序不利并导致性能问题。我的问题:什么时候应该使