C - 为文件写入void函数值

C++ - Write void function value to file

本文关键字:void 函数 文件      更新时间:2023-10-16

我具有void c 函数,该功能输出数字,每当我调用该函数时,都会显示所有数字

我已经尝试了这个

void average(int num)
{
num = 2;
cout << num;
}
 int main() {
        int num;
        average(num);
        ofstream file("tests.txt");
        file<< average(num); // on file it should write 2
 }

它给出了一个错误"错误:'运营商&lt;&lt;'"

没有匹配

有人知道我在做什么错吗?

您的函数"平均"不能无效,它必须返回某些东西,例如float:

#include <fstream>
using namespace std;
float average( float x, float y ){
    return  (x+y)/2;
}

int main(){
    ofstream file;
    file.open ("file.txt");
    file << average(3,4) << endl;
}

更多有关&lt;&lt;操作员:http://www.cplusplus.com/reference/ostream/ostream/operator<</

average函数中您使用std :: cout打印值,并尝试使用operator<<在文件中捕获它们。它不起作用。如果要将这些值打印到文件中,则可以通过某些方式执行此操作。例如,其中之一:

从您的average函数返回非空隙值。返回要打印的值,例如,如果要打印一些整数,则可以从功能中返回数组或向量,其中包括您要打印的值文件(或仅写入它们(。

例如:

std::vector<int> average() {
    std::vector<int> numbers;
    numbers.emplace_back(1);
    return numbers;
}

并将值打印到文件:

std::ofstream file ("tests.txt");
std::vector<int> vec = average(3);
file.write((char*)vec.data(), vec.size());

但是,就您而言,似乎您必须计算平均数字的平均值,因此在函数的参数中,您可以接收矢量并计算其平均值:

double average(const std::vector<double> &numbers) {
    double sum = 0;
    for (auto &num : numbers) {
        sum += num;
    }
    return sum / numbers.size();
}

然后将其打印到文件:

std::ofstream file ("tests.txt");
file << average({1, 2.34, 4}) << std::endl;


另一种思维方式..

但是,如果您想将函数返回void时,则可以将文件作为参数传递给函数(不推荐出于一般代码原因(:

void average(const std::vector<double> &numbers, std::ofstream &output_file) {
    double sum = 0;
    double avg;
    for (auto &num : numbers) {
        sum += num;
    }
    avg = sum / numbers.size();
    output_file << avg;
}

然后在您的代码中:

std::ofstream file("tests.txt");
average({1, 2.34, 4}, file);
file << std::endl;