【发布时间】:2016-08-30 13:30:50
【问题描述】:
我要创建一个std::regex(__FILE__) 作为单元测试的一部分,它会检查一些打印文件名的异常输出。
在 Windows 上失败:
regex_error(error_escape):表达式包含无效的转义字符或尾随转义。
因为__FILE__ 宏扩展包含未转义的反斜杠。
有没有比循环遍历结果字符串更优雅的方法来转义反斜杠(即使用std 算法或某些std::string 函数)?
【问题讨论】:
-
__FILE__应该只打印文件名。你需要完整的路径吗? -
@Hayt "
__FILE__应该只打印文件名。"不一定 -
是的,如果他不需要它们,他可以在这里查看:msdn.microsoft.com/en-us/library/027c4t2s.aspx 假设问题不是缺少引号,您已经回答了。并假设他使用 MSVC 编译器
-
@NicolasHolthaus 也许std::transform() 加上一个 lambda 函数可能有助于以优雅的方式编写它。
-
也许最好是编写自己的函数,然后逐个字符地遍历字符串并复制它,当它找到一个 \ 时再添加一个。