c++ - このC++プログラムにコマンドライン入力を与える方法

原文 c++

私は簡単なプログラムを実行しています:

#include<iostream>
#include<math.h>
  using namespace std;
  double fu (double x) {
      double func = pow(x,0.5);
      return func;
  }

  int main (int argc, char* argv[]) {
      double x = 2;
      double func = fu(x);

      cout<<"f(x) = "<<func<<endl;
      return 0;
  }


ここで、funcxで計算される値の関数です。
このプログラムを別のプログラムから使用する必要がある場合や、このプログラムのコマンドライン実行中にpow(x,0.5)sqrt(1+sin(x))などの関数を使用する場合を考えます。

どうすればできますか? argvを使用してそれを行う場合、文字列を式func(C++コンパイラで評価できる)に変換する方法を提案できますか?

助言がありますか?
答え
そのような数式をc++の文字列から自動的に評価する簡単な方法はありません(スクリプト言語でeval()式の種類を使った経験があるかもしれません)。

C++はコンパイルされた言語であり、コンパイラーは実際には、コンパイル時に具体的な関数呼び出しやパラメーター値に何も解決できません。

プログラム内から、実行時にこれらの文字列を解析し、入力トークンとパラメーターを分解し、解析結果を、解析されたパラメーター値を適用する適切な<cmath>関数の具体的な関数呼び出しにマッピングする必要があります。

これは簡単なことではなく、利用可能なソリューションアプローチは多数あります。しかし、これらはコマンドライン引数から解析したい数学言語の種類に完全に依存しています。
関連記事

c++ - カスタムデータ型は、可変サイズの効率のための可能で実行可能なオプションですか?

c++ - C++とFortranの並列MM速度差ループタイリング

c++ - リンクリストで変更されたデータはメモリに反映されません

c++ - Qtでマウスイベントが発生したときに呼び出される関数の宣言

c++ - OpenCVでのレーン検出器分割線C++

c++ - 誤った値を返す二重ハッシュ関数

c++ - C++プロキシDLL(64ビット)

java - Android Gstreamer SDKでANativeWindow_lockがエラー-22を返す

c++ - doxygenの「ファイルドキュメント」リストから「README.md」を除外します

java - 最小の「XOR」演算でバイナリマトリックスを再作成する