String literals C++?

后端 未结 4 382
误落风尘
误落风尘 2020-12-10 13:08

I need to do the following C# code in C++ (if possible). I have to const a long string with lots of freaking quotes and other stuff in it.

const String _lit         


        
相关标签:
4条回答
  • 2020-12-10 13:15

    There is no equivalent of C#'s "@" in C++. The only way to achieve it is to escape the string properly:

    const char *_literal = "I can use \"quotes\" inside here";
    
    0 讨论(0)
  • 2020-12-10 13:16

    There is no such mechanism in C++. You'll have to do it the old fashioned way, by using escapes.

    You might be able to use a scripting language to make the escaping part a little easier, though. For instance, the %Q operator in Ruby will return a properly escaped double-quoted string when used in irb:

    irb(main):003:0> %Q{hello "world" and stuff     with    tabs}
    => "hello \"world\" and stuff\twith\ttabs"
    
    0 讨论(0)
  • 2020-12-10 13:17

    There is no raw string literals in C++. You'll need to escape your string literals.

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

    C++0x offers a raw string literal when it's available:

    R"C:\mypath"
    

    By the way you should not name anything with a leading underscore as such identifiers are reserved in C++.

    0 讨论(0)
  • 2020-12-10 13:27

    That is not available in C++03 (the current standard).

    That is part of the C++0x draft standard but that's not readily available just yet.

    For now, you just have to quote it explicitly:

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

    Once C++0x becomes reality, you'll be able to write:

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

    and when you need )" in your literal:

    const std::string _literal = R"DELIM(more "(raw string)" fun)DELIM";
    
    0 讨论(0)
提交回复
热议问题