【问题标题】:Passing on a char* which contains a path传递包含路径的 char*
【发布时间】:2011-05-16 16:00:25
【问题描述】:


我正在尝试通过几个函数传递一个带有路径的字符串,但是我放入路径中的每个 '\\' 在内部函数中都变成了一个 '\',我不能以这种方式使用它。
输入新函数时有没有办法保留“\\”?
我在 Windows 上使用 C++。
谢谢:)

【问题讨论】:

    标签: c++ windows string path


    【解决方案1】:

    在 C++0x 中,您将拥有一个原始字符串文字:

    R"(anything can appear here, even " or \\ )"
    

    "( 和 )" 之间的所有内容都是字符串的一部分——无需转义。在当前的标准中你无法达到你想要的。

    【讨论】:

      【解决方案2】:

      为一些混淆的答案做好准备。

      \ 是转义字符(例如,您可能已经遇到过 \n 转义序列),\\ 是表示单个 \ 字符的转义序列(从某种意义上说,它可以被理解为转义字符的转义)。如果您真的想在字符串中包含\\,则必须使用\\\\

      std::cout << "\\\\something\\" << std::endl; /* prints "\\something\" */
      

      再举一个例子,假设您想在字符串中包含一些"。写作:

      const char *str = "Hello "World"";
      

      显然不会编译,您必须使用 \ 转义 "

      const char *str = "Hello \"World\"";
      

      【讨论】:

      • +1,虽然,“显然不会编译”,除非有人 #defines World 然后它就不再那么明显了。
      • 我知道,但我希望我不必用“\\\\\\”之类的怪物写字符串......没有别的办法吗?
      猜你喜欢
      • 2022-06-28
      • 2015-04-26
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2017-07-27
      • 1970-01-01
      相关资源
      最近更新 更多