gpt4 book ai didi

c++ - 如何解析带有原始转义序列的字符串?

转载 作者:太空狗 更新时间:2023-10-29 23:02:45 27 4
gpt4 key购买 nike

假设有2个字符串:

string parse(const string& s) {
// how to write this function?
}

int main() {
string s1 = R"(hello\n\"this is a string with escape sequences\"\n)";
string s2 = "hello\n\"this is a string with escape sequences\"\n";
assert(parse(s1) == s2);
}

我的问题是,除了一些遍历字符串并检查每个可能的转义序列的手工代码之外,如何编写函数 parse() 以使断言成功?是否有任何现有的习语可以做到这一点?

最佳答案

您可以使用字符串流。检查字符串的每个字符是否存在转义的反斜杠“\”字符。找到后,检查下一个字符是否为有效的转义字符。然后将一个字符串写入该转义字符序列的字符串流。

std::string parse(const std::string& s)
{
std::stringstream ss{""};

for(size_t i = 0; i < s.length(); i++)
{
if (s.at(i) == '\\')
{
switch(s.at(i + 1))
{
case 'n': ss << "\n"; i++; break;
case '"': ss << "\""; i++; break;
default: ss << "\\"; break;
}
}
else
{
ss << s.at(i);
}
}

return ss.str();
}

关于c++ - 如何解析带有原始转义序列的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27617903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com