gpt4 book ai didi

c++ - 文本输出发送到文件并稍后在程序中使用。如何改用缓冲区?

转载 作者:搜寻专家 更新时间:2023-10-31 01:08:31 24 4
gpt4 key购买 nike

我是初学者,正在尝试编写物理计算程序。

目前,子程序生成的输出被发送到一个单独的文本文件,父程序稍后打开这个文件并从中读取一个值——输出不需要存储,只有值是重要的。为此目的使用缓冲区会更优雅,这样过程中就不会生成额外的文本文件。

我的问题是如何将输出发送到缓冲区而不是文件(下面的 micromegas.out),然后按照与下面代码中输出文件相同的方式在缓冲区中搜索值?

string micromegas = "./micromegas_3.2/MSSM/main " + p[0] + " " + p[1] + " " + p[2] + " " + p[3] + " " + p[4] + " > micromegas.out";
// Execute child program and send output to micromegas.out
system(micromegas.c_str());

FILE *fout = fopen("micromegas.out", "r"); // open the output file and search for the value (Omega)
char * buffer =(char *)malloc(512);
long double Xf, calc_omega_hsq;
while(fgets(buffer, 512, fout))
{
if (sscanf(buffer, "Xf=%Lf Omega=%Lf", &Xf, &calc_omega_hsq)) {}
}
fclose (fout);

当前存储在文件“micromegas.out”中的输出“====遗迹密度的计算===== Xf=2.22e+01 Omega=1.34e+00”

最佳答案

所以,我想你在找什么popen (或 Windows 中的 _popen),这将允许您从另一个进程中读取标准。

你会做一些像 FILE *fout = popen(micromegas.c_str(), "r"); 而不是 systemfopen行。

关于c++ - 文本输出发送到文件并稍后在程序中使用。如何改用缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17949749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com