我在格式化包含引号的字符串时遇到问题。
例如,我得到了这个std :: string:server/register?json={"id"="monkey"}
此字符串需要将四个引号替换为\"
,因为它将用作另一个函数的c_str()。
如何以最佳方式对此字符串执行此操作?
{"id"="monkey"}
编辑:我需要一个仅使用STL库的解决方案,最好只使用String.h。我已经确认我需要替换“with”。
EDIT2:Nvm,发现框架中的错误
答案 0 :(得分: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
答案 1 :(得分:1)
如果std::string
包含server/register?json={"id"="monkey"}
,则无需替换任何内容,因为它已经正确格式化。
您需要的唯一地方就是您对字符串进行了硬编码并手动分配。但是,您可以手动替换引号。