Main Content

matlab::engine::StreamBuffer

ストリーム バッファーの定義

説明

std::basic_streambuf<char16_t> の型定義。

この例では、MATLABEngine::eval メンバー関数による MATLAB® 関数の評価から出力を返すための、文字列バッファーを定義します。この関数は matlab::engine::StreamBuffer 由来のバッファーを使用して、MATLAB からの出力を C++ に返します。

#include "MatlabEngine.hpp"
#include "MatlabDataArray.hpp"
#include <iostream>

using namespace matlab::engine;
using SBuf = std::basic_stringbuf<char16_t>;

void printFromBuf(const std::shared_ptr<SBuf> buf)
{
    //Get text from buf
    auto text_ = buf->str();
    std::cout << "*" << convertUTF16StringToUTF8String(text_)
        << "*" << std::endl;
}

int main() {

    //Create Array factory 
    matlab::data::ArrayFactory factory;

    // Connect to named shared MATLAB session started as:
    // matlab -r "matlab.engine.shareEngine('myMatlabEngine')"
    String session(u"myMatlabEngine");
    std::unique_ptr<MATLABEngine> matlabPtr = connectMATLAB(session);

    auto outBuf = std::make_shared<SBuf>();
    auto errBuf = std::make_shared<SBuf>();

    matlabPtr->eval(u"matlab.engine.engineName", outBuf, errBuf);
    printFromBuf(outBuf);
    printFromBuf(errBuf);
    return 0;
}

バージョン履歴

R2017b で導入