[C++] 282 FLTK : ChatGPTアプリの製作 その11 エスケープシーケンス処理

[M1 Mac, Monterey 12.6.3, clang 13.0.0, FLTK 1.3.8, ChatGPT Plus, NO IDE]

string型をjson型データに変換する際、エスケープシーケンスを適切に前処理しないと変換に失敗します。

そこで前処理するescapeSequence関数を作成しました。内容についてはさらに詰める必要がありますが、今のところ私が使う範囲では正常に動作します。

C++で文字列を扱うと色々と泥沼にハマります。

ようやくOpenAIのアカウント管理ページに課金が反映されました。6日間それなりに使っても0.5ドル(70円)でした。お試し期間としてもらっている18ドルを使い切るのはまだまだ先のようです。値下げ前だったら10倍の700円ということを考えると激安もいいところです。

今日の夕方から急にAPIが重くなったりサーバ内部エラーになるのですが、トラフィックがきつくなってきたのでしょうか。

void escapeSequence(string& str){
    size_t pos = 0;
    while ((pos = str.find("\\", pos)) != string::npos) {
        str.replace(pos, 1, "\\\\");
        pos += 2;
    }

    pos = 0;
    while ((pos = str.find('"', pos)) != string::npos) {
        str.replace(pos, 1, "\\\"");
        pos += 2;
    }

    pos = 0;
    while ((pos = str.find("'", pos)) != string::npos) {
        str.replace(pos, 1, "\'");
        pos += 2;
    }

    pos = 0;
    while ((pos = str.find('\n', pos)) != string::npos) {
        str.replace(pos, 1, "\\n");
        pos += 2;
    }

    pos = 0;
    while ((pos = str.find('\t', pos)) != string::npos) {
        str.replace(pos, 1, "\\t");
        pos += 2;
    }

    pos = 0;
    while ((pos = str.find('\b', pos)) != string::npos) {
        str.replace(pos, 1, "\\b");
        pos += 2;
    }

    pos = 0;
    while ((pos = str.find('\f', pos)) != string::npos) {
        str.replace(pos, 1, "\\f");
        pos += 2;
    }
}
ChatGPT課金額推移