Python中的C++或C++纯用于文件模板操作

Python in C++ or C++ pure for file templates manipulation?

本文关键字:C++ 文件 操作 中的 Python 用于      更新时间:2023-10-16

(我不知道我是否可以在这里发布这样的问题)

我有个问题需要建议。我有一个C++代码,它派生了几个参数(基本上是数字)。这些数字必须用于生成进一步的代码,我有模板,作为一个非常琐碎的例子,模板可以看起来像:

#define PAR1 <PAR1>
#define PAR2 <PAR2>
//other parameters, function declaration, tables and so on...

在上面的例子中,所有可能的其他代码都是由上面提到的C++代码派生的。

在您看来,实现参数替换的好方法是什么?

我在考虑两种解决方案,但我不知道哪一种是最好的:1.我可以编写几个python脚本(根据需要)来替换给定参数的字符串,一旦派生出参数,就必须在C++应用程序中调用这些脚本。2.读取模板文件的流,查找要替换的参数的位置并替换它。

第一个解决方案需要从C++应用程序调用pythons脚本,但我不知道如何做到这一点,我一直在寻找一些解决方案,老实说,我不知道它有多简单

第二个解决方案是C++文件操作,在我的特定情况下,这可能有点痛苦?

既然我所做的是实现目标的最简单方法,你会建议哪一种?

Thx

更新:我试图通过发布一个琐碎的例子来更具体一点。一个可能的模板,非常小,可以是以下内容:

//header_template.h
#ifndef HEADER_H
#define HEADER_H
#include <stdio.h>
#define A <A>
#define B <B>
#define C <C>
void func1();
void func2();
void func3();
#endif

源文件//src.c#包括"header.h"

void func1() {
  int i, my_array1[A];
  for(i = 0; i < A; i++) {
     my_array1[i] = do_something(i);
  }
  //other processing;
}
void func2() {
  int i, j, my_matrix[A][B];
  for(i = 0; i < A; i++) {
     for(j = 0; j < B; j++) {
        my_matrix[i][j] = do_something_2(i,j);
     }
  }
}
void func3() {
  int i;
  int my_array[A + B + C];
  for(i = 0; i < A + B + C; i++) {
     my_array[i] = do_something_else(i);
  }
}

参数A, B, C是在代码生成之前通过一些其他处理操作导出的,我想要实现的是:

//header.h
#ifndef HEADER_H
#define HEADER_H
#include <stdio.h>
#define A 17
#define B 9
#define C 37
void func1();
void func2();
void func3();
#endif

我的问题是:使用python进行文本替换非常容易,而在C++中则不那么容易。参数A、B和C的处理是由C++中实现的东西完成的,我需要扩展这样的程序来进行这样的替换,鉴于我到目前为止一直在使用C++,是开发小的python程序,然后在C++程序中调用这样的脚本更好,还是只在C++中实现函数来进行替换更好?

我做的例子听起来可能很琐碎,这是真的,但我正在处理的实际代码,当然我发布的是更大的代码,所以我想问的是在这种情况下你会怎么做。

虽然我是Python爱好者,但我认为对于这一点,你应该留在C++中(因为你似乎已经有了大量的C++代码),并使用像Boost这样的不错的库。你可以考虑用Cython作为一座桥,但我估计这太过分了。