User:Markdownフォーマットされたテキストを含むSTD ::文字列への参照を取得するC ++関数を書き込み、HTMLフォーマットされたテキストを含むSTD ::文字列を返します。 Assistant:確かに、Markdownフォーマットされたテキストを含むSTD :: STRINGを参照し、HTMLフォーマットテキストを含むSTD ::文字列を返すC ++関数があります。

`` `
#include <string>

std :: string markdowntohtml（std :: string＆markdown）{
    std :: string html = markdown;

    //ヘッダーを交換します
    html = std :: regex_replace（html、std :: regex（ "^＃（。*）"）、 "<h1> $ 1 </h1>"）;
    html = std :: regex_replace（html、std :: regex（ "^##（。*）"）、 "<h2> $ 1 </h2>"）;
    html = std :: regex_replace（html、std :: regex（ "^###（。*）"）、 "<h3> $ 1 </h3>"）;
    html = std :: regex_replace（html、std :: regex（ "^####（。*）"）、 "<h4> $ 1 </h4>"）;
    html = std :: regex_replace（html、std :: regex（ "^#####（。*）"）、 "<h5> $ 1 </h5>"）;
    html = std :: regex_replace（html、std :: regex（ "^######（。*）"）、 "<h6> $ 1 </h6>"）;

    //太字と斜体を交換します
    html = std :: regex_replace（html、std :: regex（ "\\*\\*（。*？）\\*\\*"）、 "<strong> $ 1 </sthing>"）;
    html = std :: regex_replace（html、std :: regex（ "\\*（。*？）\\*"）、 "<em> $ 1 </em>"）;

    //リンクを交換します
    html = std :: regex_replace（html、std :: regex（ "\\ [（[^\\ []+）\\] \\（（[^\\）]+）\\）"）、 "<<href = \ "$ 2 \"> $ 1 </a> "）;

    //インラインコードを交換します
    html = std :: regex_replace（html、std :: regex（ "`（[^`]+）` "）、" <code> $ 1 </code> "）;

    HTMLを返します。
}
`` `

この関数は、通常の式を使用して、さまざまなマークダウン構文を一致させ、同等のHTMLタグに置き換えます。たとえば、行の先頭で<H1>タグで単一の＃を置き換えます。

この関数は、入力文字列がすでに適切にフォーマットされていることを前提としていることに注意してください。検証やエラーチェックは実行されません。 User:そのコードを提供していただきありがとうございます Assistant:どういたしまして。他に何か必要な場合はお知らせください。 
User:試したばかりですが、コードが `*`文字の間に大きなコメントブロックがあるコードブロックに「<em>」タグを挿入しています。この素朴なRegexアプローチは、私の使用ケースのためにそれをカットしないと思います。ライブラリのような、より堅牢なソリューションをお勧めできますか？可能であれば、MITまたは同様の寛容なライセンスと低フットプリントを備えたものが必要です。
マークダウンをHTMLに変換するためにオープンソースC ++ライブラリを使用すると、より堅牢なソリューションが得られます。これに使用できるC ++ライブラリの例はMaddyです。Maddyは、C ++ 14標準ライブラリのみに依存するMITライセンスヘッダーのみのライブラリです。

「MarkDowntoHTML」関数は、次のようにMaddyライブラリを使用して再抑制される可能性があります。

`` `
#include <memory>
#include <sstream>
#include <string>

#include "maddy/parser.h"

std :: string markdowntohtml（std :: string＆markdown）{
    std :: stringstream markdownstream（markdown）;
    auto parser = std :: make_unique <maddy :: parser>（）;
    parser-> parse（markdownstream）を返します。
}
`` `

このコードをコンパイルするには、「Maddy」ライブラリのヘッダーをインクルードパスに追加する必要があります。コンパイラ、ビルドシステムまたはIDEを使用することによっては、インクルードパスを変更するプロセスが異なる場合があります。

別の方法として、MD4CなどのCライブラリもできます。MD4Cは、Cで書かれたMITライセンスマークダウンパーサーです。これは、Commonmark仕様に準拠しています。