【发布时间】:2011-05-16 16:00:25
【问题描述】:
我正在尝试通过几个函数传递一个带有路径的字符串,但是我放入路径中的每个 '\\' 在内部函数中都变成了一个 '\',我不能以这种方式使用它。
输入新函数时有没有办法保留“\\”?
我在 Windows 上使用 C++。
谢谢:)
【问题讨论】:
我正在尝试通过几个函数传递一个带有路径的字符串,但是我放入路径中的每个 '\\' 在内部函数中都变成了一个 '\',我不能以这种方式使用它。
输入新函数时有没有办法保留“\\”?
我在 Windows 上使用 C++。
谢谢:)
【问题讨论】:
在 C++0x 中,您将拥有一个原始字符串文字:
R"(anything can appear here, even " or \\ )"
"( 和 )" 之间的所有内容都是字符串的一部分——无需转义。在当前的标准中你无法达到你想要的。
【讨论】:
为一些混淆的答案做好准备。
\ 是转义字符(例如,您可能已经遇到过 \n 转义序列),\\ 是表示单个 \ 字符的转义序列(从某种意义上说,它可以被理解为转义字符的转义)。如果您真的想在字符串中包含\\,则必须使用\\\\:
std::cout << "\\\\something\\" << std::endl; /* prints "\\something\" */
再举一个例子,假设您想在字符串中包含一些"。写作:
const char *str = "Hello "World"";
显然不会编译,您必须使用 \ 转义 " :
const char *str = "Hello \"World\"";
【讨论】: