gpt4 book ai didi

c++ - 解析用户字符串,转义字符

转载 作者:行者123 更新时间:2023-11-30 04:29:56 27 4
gpt4 key购买 nike

我如何解析一个字符串并将所有出现的 \. 替换为某些东西?但同时将所有 \\ 替换为 \(文字)。示例:

你好\。世界 => 你好“。”世界
你好\\。世界=> 你好\.世界
你好\\\。世界 => 你好\"."世界

第一 react 是用std::replace_if,如下:

    bool escape(false);
std::replace_if(str.begin(), str.end(), [&] (char c) {
if (c == '\\') {
escape = !escape;
} else if (escape && c == '.') {
return true;
}
return false;
},"\".\"");

然而,这只是将 \. 更改为 \". 序列。此外,它不适用于凝视中的 \\ 部分。

有没有优雅的方法来解决这个问题?在我开始使用 for 循环和重建字符串进行 hack 工作之前?

最佳答案

优雅的方法:具有三个状态的有限状态机:

  • 寻找“\”(遍历字符串)
  • 找到“\”,下一个字符是“.”
  • 找到'\',下一个字符是'\'

要实现,您可以使用默认字符串库中的迭代器和 replace 方法。

http://www.cplusplus.com/reference/string/string/replace/

关于c++ - 解析用户字符串,转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9022874/

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