代码之家  ›  专栏  ›  技术社区  ›  Aillyn

C中的HereDoc字符串#

  •  42
  • Aillyn  · 技术社区  · 15 年前

    C中是否有字符串的HereDoc符号,最好是我不必转义的符号? 任何东西 (包括双引号,这在逐字字符串中是一个怪癖)?

    4 回复  |  直到 7 年前
        1
  •  57
  •   Jon Skeet    15 年前

    正如其他人所说,没有。

    但就我个人而言,我会首先避免创建它们——而是使用嵌入式资源。它们非常容易使用,如果您有一个实用方法将调用程序集中的命名嵌入式资源作为字符串(可能假定为UTF-8编码)加载,则意味着:

    • 如果嵌入的文档类似于SQL、XSLT、HTML等,则会突出显示语法,因为它确实会 SQL(等)文件
    • 你不用担心 任何 逃逸
    • 您不必担心缩排文档或使C代码看起来难看。
    • 如果与此相关,您可以以“普通”方式使用该文件(例如,以HTML页的形式查看该文件)。
    • 数据与代码分离
        2
  •  38
  •   Brad Parks    14 年前

    尽管它不支持Heredoc,但您仍然可以使用逐字字符串执行以下操作:

    string miniTemplate = @"
    
      Hello ""{0}"",
    
      Your friend {1} sent you this message:
    
         {2}
    
      That's all!";
    
    string populatedTemplate = String.Format(miniTemplate, "Fred", "Jack", "HelloWorld!");
    
    System.Console.WriteLine(populatedTemplate);
    

    扣押: http://blog.luckyus.net/2009/02/03/heredoc-in-c-sharp/

        3
  •  9
  •   polygenelubricants    15 年前

    不,C中没有“HereDoc”样式的字符串文字。

    C只有两种类型的字符串文本:

    • 规则的 文字,需要许多转义序列
    • 逐字逐句的 字面意义的, @ -引用:doublequeotes需要通过double进行转义

    工具书类

        4
  •  0
  •   PM12    7 年前

    一个很好的参考 遗传 在不同编程语言中可用的等价物位于 Rosettacode Wiki