字符串文字C ++?

时间:2010-04-08 03:02:03

标签: c++ string

我需要在C ++中执行以下C#代码(如果可能)。我必须使用很多引人注目的引号和其他内容来构造一个长字符串。

const String _literal = @"I can use "quotes" inside here";

4 个答案:

答案 0 :(得分:35)

这在C ++ 03(当前标准)中不可用。

这是C ++ 0x草案标准的一部分,但目前尚不可用。

目前,您只需明确引用它:

const std::string _literal = "I have to escape my quotes in \"C++03\"";

一旦C ++ 0x成为现实,你就可以写下:

const std::string _literal = R"(but "C++0x" has raw string literals)";

当您在文字中需要)"时:

const std::string _literal = R"DELIM(more "(raw string)" fun)DELIM";

答案 1 :(得分:7)

C ++中没有C#的“@”等价物。实现它的唯一方法是正确地转义字符串:

const char *_literal = "I can use \"quotes\" inside here";

答案 2 :(得分:5)

C ++中没有原始字符串文字。你需要转义你的字符串文字。

std::string str = "I can use \"quotes\" inside here";

C ++ 0x在可用时提供原始字符串文字:

R"C:\mypath"

顺便说一句,你不应该用前导下划线命名任何东西,因为这样的标识符是在C ++中保留的。

答案 3 :(得分:2)

C ++中没有这样的机制。你必须采用老式的方式,通过使用逃生。

但是,您可以使用脚本语言使转义部分更容易一些。例如,Ruby中的%Q运算符将在irb中使用时返回正确转义的双引号字符串:

irb(main):003:0> %Q{hello "world" and stuff     with    tabs}
=> "hello \"world\" and stuff\twith\ttabs"