Python転職初心者向けエンジニアリングブログ

Pythonに魅了されたあなたへ。エンジニアリングの扉を開く転職初心者向けのブログへようこそ。このブログでは、Pythonの奥深さに迫りながら、エンジニアリングへの転職に役立つ情報を提供しています。未経験者から始めるPythonエンジニアリングの世界への一歩を踏み出すためのガイダンス、ベストプラクティス、そして成功事例など、初心者の方でもわかりやすいコンテンツをお届けします。

PythonからC++プログラムを呼び出して引数を受け渡す方法

LYPプレミアム会員 python

PythonからC++プログラムを呼び出して引数を受け渡す方法

PythonとC++は、それぞれ異なるプログラミング言語ですが、両者を組み合わせて使用することで、Pythonの柔軟性とC++のパフォーマンスを組み合わせることができます。この記事では、PythonからC++プログラムを呼び出して引数を受け渡す方法について解説します。具体的には、Pythonのsubprocessモジュールを使用してC++プログラムを実行し、引数を渡す方法について説明します。

Pythonのsubprocessモジュールについて

Pythonのsubprocessモジュールは、外部プロセスを生成および制御するための機能を提供します。このモジュールを使用すると、Pythonから外部プログラムを呼び出したり、外部プログラムとの間でデータを受け渡したりすることができます。subprocessモジュールは、Pythonの標準ライブラリに含まれており、追加のインストールは不要です。

C++プログラムの作成

まず、Pythonから呼び出すC++プログラムを作成します。以下は、簡単なC++プログラムの例です。このプログラムは、引数として文字列を受け取り、それを大文字に変換して出力します。

#include <iostream>
#include <string>
#include <algorithm>

int main(int argc, char* argv[]) {
    if (argc != 2) {
        std::cerr << "Usage: " << argv[0] << " <string>" << std::endl;
        return 1;
    }
    
    std::string str = argv[1];
    std::transform(str.begin(), str.end(), str.begin(), ::toupper);
    std::cout << "Upper case string: " << str << std::endl;
    
    return 0;
}

このプログラムでは、argcargv[]を使用してコマンドライン引数を受け取り、受け取った文字列を大文字に変換して出力しています。

PythonからC++プログラムを呼び出す

次に、Pythonから上記のC++プログラムを呼び出して、引数を受け渡す方法を見ていきましょう。以下のPythonコードは、subprocessモジュールを使用してC++プログラムを呼び出し、引数として文字列を渡しています。

import subprocess

def call_cpp_program(input_string):
    command = ["./cpp_program", input_string]
    result = subprocess.run(command, capture_output=True, text=True)
    if result.returncode == 0:
        print("C++プログラムの実行結果:", result.stdout)
    else:
        print("C++プログラムの実行中にエラーが発生しました:", result.stderr)

# C++プログラムを呼び出す
input_string = "Hello, World!"
call_cpp_program(input_string)

このPythonコードでは、subprocess.run()関数を使用してC++プログラムを実行しています。subprocess.run()関数は、指定したコマンドを実行し、その結果を返します。capture_output=Trueを指定することで、標準出力および標準エラー出力をキャプチャし、text=Trueを指定することで、文字列として結果を受け取ります。

実行結果

上記のPythonコードを実行すると、以下のような出力が得られます。

C++プログラムの実行結果: UPPER CASE STRING: HELLO, WORLD!

これにより、PythonからC++プログラムを呼び出して、引数を受け渡すことができました。

まとめ

この記事では、PythonからC++プログラムを呼び出して引数を受け渡す方法について解説しました。subprocessモジュールを使用することで、PythonとC++を組み合わせてプログラムを開発する際に柔軟性が向上します。Pythonの柔軟性とC++のパフォーマンスを組み合わせて、より効率的なプログラムを開発するために、この方法を活用してみてください。