gpt4 book ai didi

c++ - 替换预处理器定义中的字符

转载 作者:太空狗 更新时间:2023-10-29 20:52:37 24 4
gpt4 key购买 nike

我有一个定义,其中包含一个路径(没有转义序列),如下所示:

// Incorrect
#define PATH "c:\blah\blah\file.cfg"

我宁愿这样:

// Corrected
#define PATH "c:\\blah\\blah\\file.cfg"

虽然不幸的是我不能修改宏定义(实际上是生成包含宏的源代码的脚本......),除了添加前缀。现在我需要打开此路径中给出的文件。我试过像这样的 C++11 原始字符串文字:

// Modified definition
#define PATH R"c:\blah\blah\file.cfg"
std::ifstream(PATH); // error: unrecognised escape sequence

现在的问题是如何使用宏替换所有\

注意事项(如果重要的话):
编译器:MSVC 14.0
操作系统:Windows 7

最佳答案

您生成的原始字符串的语法不正确。

正确的是:

#define PATH R"(c:\blah\blah\file.cfg)"

检查 CPP 引用中的 (6) 语法格式:

prefix(optional) R "delimiter( raw_characters )delimiter" (6)

参见:string literal

示例:http://ideone.com/OZggmK

关于c++ - 替换预处理器定义中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45707177/

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