1

我在格式化包含引号的字符串时遇到问题。

例如,我得到了这个 std::string:server/register?json={"id"="monkey"}

该字符串需要将四个引号替换为\",因为它将用作另一个函数的 c_str()。

如何在这个字符串上以最好的方式做到这一点?

{"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::stringcontains server/register?json={"id"="monkey"},则无需替换任何内容,因为它已经正确格式化。

您唯一需要的地方是您对字符串进行硬编码并手动分配它。但是,您可以手动替换引号。

于 2011-09-27T13:21:43.470 回答