1

引用符を含む文字列のフォーマットに問題があります。

たとえば、私はこのstd :: string:を取得しましたserver/register?json={"id"="monkey"}

\"この文字列は、別の関数のc_str()として使用されるため、4つの引用符をで置き換える必要があります。

この文字列でこれを最善の方法で行うにはどうすればよいですか?

{"id"="monkey"}

編集:STLライブラリのみ、できればString.hのみを使用するソリューションが必要です。「」を「」に置き換える必要があることを確認しました。

EDIT2:Nvm、フレームワークにバグが見つかりました

4

2 に答える 2

5

C文字列に'"'文字を含めることは完全に合法です。したがって、簡単な答えは、何もする必要がないということです。引用符をエスケープする必要があるのは、ソースコードを入力するときだけです。

std::string str("server/register?json={\"id\"=\"monkey\"}")
my_c_function(str.c_str());// Nothing to do here

ただし、一般に、サブストリングを別のサブストリングに置き換える場合は、ブーストストリングアルゴリズムを使用します。

#include <boost/algorithm/string/replace.hpp>
#include <iostream>
int main(int, char**)
{
    std::string str = "Hello world";
    boost::algorithm::replace_all(str, "o", "a"); //modifies str
    std::string str2 = boost::algorithm::replace_all_copy(str, "ll", "xy"); //doesn't modify str
    std::cout << str << " - " << str2 << std::endl;
}
// Displays : Hella warld - Hexya warld
于 2011-09-27T13:27:29.077 に答える
1

std::stringが含まれている場合はserver/register?json={"id"="monkey"}、すでに正しくフォーマットされているため、何も置き換える必要はありません。

これが必要になる唯一の場所は、文字列をハードコーディングして手動で割り当てた場合です。ただし、引用符は手動で置き換えることができます。

于 2011-09-27T13:21:43.470 に答える