C++;将多个函数的fprintf转换为单个文本文件 我在从一个大型C++代码项目中选择的位置打印文本文件时遇到了困难。
使用C++;将多个函数的fprintf转换为单个文本文件 我在从一个大型C++代码项目中选择的位置打印文本文件时遇到了困难。,c++,file-io,C++,File Io,使用C++我正在使用一个函数X,它被多次调用 这是从函数Y 我希望将函数X的结果输出到一个文本文件中,并通过不断使用声明、fopen、fprintf、fclose函数集来实现这一点——尽管速度非常缓慢 但是,我只希望在从主机函数Y的特定区域调用X时将结果打印到文件中 我希望这样做,因为当前代码的侵入性最小(即,我不想在函数X中添加另一个参数,也不想声明全局变量) 这是一种独特的方法,可以有效地“告诉”代码和子函数何时开始打印到文件以及何时停止 (另外,我已经使用VBA对结果进行了后期处理,但是发
C++
我正在使用一个函数X
,它被多次调用
这是从函数Y
我希望将函数X
的结果输出到一个文本文件中,并通过不断使用声明、fopen、fprintf、fclose函数集来实现这一点——尽管速度非常缓慢
但是,我只希望在从主机函数Y
的特定区域调用X
时将结果打印到文件中
我希望这样做,因为当前代码的侵入性最小(即,我不想在函数X
中添加另一个参数,也不想声明全局变量)
这是一种独特的方法,可以有效地“告诉”代码和子函数何时开始打印到文件以及何时停止
(另外,我已经使用VBA对结果进行了后期处理,但是发现这种解决方法效率低下)
任何想法或代码构造都是最受欢迎的
蜂拥
下面是子函数X:
void `X`() {
FILE *f2 = NULL;
f2 = fopen("log.txt", "a");
// Calculate a result: `result`
fprintf(f2, "%.4e ", result);
fclose (f2);
}
void Y Y(){
for i=1:100{
X();
X();
X(); // <-- Wishing to print only this line to a text file
}
}
下面是主要的调用函数Y:
void `X`() {
FILE *f2 = NULL;
f2 = fopen("log.txt", "a");
// Calculate a result: `result`
fprintf(f2, "%.4e ", result);
fclose (f2);
}
void Y Y(){
for i=1:100{
X();
X();
X(); // <-- Wishing to print only this line to a text file
}
}
void Y(){
对于i=1:100{
X();
X();
(),//p>因为你在C++中,你可以添加一个x的重载,它的参数是什么时候做,而不必改变任何调用方。
你有
void X(args);
加
然后,将原始X中的代码移动到新的X中,选中doIt
在原始X中,调用X(args,false)
不知何故,必须传递是否实际记录日志的布尔状态。选项有:参数、全局、成员变量(静态或实例)、线程局部变量或文件。无论您做什么。它可能在逻辑上等同于声明全局变量。但您可以通过各种方式减轻这方面的痛苦:
如果X是类成员,则可以将变量声明为X类的静态成员。
如果X属于名称空间,则全局变量可以属于该名称空间。
您可以将其声明为静态变量,位于X的源文件中,并使用源文件中的函数设置其值。
依此类推。如果您不想保持二进制一致性,那么还可以使用重载运算符()将X函数转换为结构/类-然后添加字段或方法specyfying,如果您是否应该打印它。-但是这与另一个全局变量非常相似。除了重载X之外,我怀疑是否有其他方法不使用全局变量或类似的东西
如何在X次调用之间保持FILE*指针?函数中的全局?stativ变量?FILE*指针在每次调用函数时都被声明、打开和关闭。由于fopen(“a”),结果被附加到单个文件的末尾。这样做我会受到很大的惩罚。