本文翻译自:How to split a string literal across multiple lines in C / Objective-C?

I have a pretty long sqlite query: 我有一个很长的sqlite查询:

const char *sql_query = "SELECT statuses.word_id FROM lang1_words, statuses WHERE statuses.word_id = lang1_words.word_id ORDER BY lang1_words.word ASC";

How can I break it in a number of lines to make it easier to read? 如何在多行中打破它以便于阅读? If I do the following: 如果我执行以下操作:

const char *sql_query = "SELECT word_idFROM table1, table2WHERE table2.word_id = table1.word_idORDER BY table1.word ASC";

I am getting an error. 我收到了一个错误。

Is there a way to write queries in multiple lines? 有没有办法在多行中编写查询?


#1楼

参考:https://stackoom.com/question/3LPy/如何在C-Objective-C中跨多行拆分字符串文字


#2楼

I am having this problem all the time, so I made a tiny tool to convert text to an escaped multi-line Objective-C string: 我一直有这个问题,所以我做了一个小工具将文本转换为转义的多行Objective-C字符串:

http://multilineobjc.herokuapp.com/ http://multilineobjc.herokuapp.com/

Hope this saves you some time. 希望这能为您节省一些时间。


#3楼

There's a trick you can do with the pre-processor. 你可以用预处理器做一个技巧。
It has the potential down sides that it will collapse white-space, and could be confusing for people reading the code. 它有潜在的缺点,它会崩溃白色空间,并且可能会让阅读代码的人感到困惑。
But, it has the up side that you don't need to escape quote characters inside it. 但是,它有一个好处,你不需要在其中转义引号字符。

#define QUOTE(...) #__VA_ARGS__
const char *sql_query = QUOTE(SELECT word_idFROM table1, table2WHERE table2.word_id = table1.word_idORDER BY table1.word ASC
);

the preprocessor turns this into: 预处理器将其转换为:

const char *sql_query = "SELECT word_id FROM table1, table2 WHERE table2.word_id = table1.word_id ORDER BY table1.word ASC";

I've used this trick when I was writing some unit tests that had large literal strings containing JSON. 当我编写一些包含JSON的大型文字字符串的单元测试时,我已经使用过这个技巧。 It meant that I didn't have to escape every quote character \\". 这意味着我没有必要逃避每个引用字符“。


#4楼

Extending the Quote idea for Objective-C: 扩展Objective-C的引用思路:

#define NSStringMultiline(...) [[NSString alloc] initWithCString:#__VA_ARGS__ encoding:NSUTF8StringEncoding]NSString *sql = NSStringMultiline(SELECT name, ageFROM usersWHERE loggedin = true
);

#5楼

You can also do: 你也可以这样做:

NSString * query = @"SELECT * FROM foo "@"WHERE "@"bar = 42 "@"AND baz = datetime() "@"ORDER BY fizbit ASC";

#6楼

You could also go into XCode -> Preferences, select the Indentation tab, and turn on Line Wrapping. 你也可以进入XCode - > Preferences,选择Indentation选项卡,然后打开Line Wrapping。

That way, you won't have to type anything extra, and it will work for the stuff you already wrote. 这样,您就不必再输入任何额外内容,它将适用于您已编写的内容。 :-) :-)

One annoying thing though is... 但令人烦恼的是......

if (you're long on indentation&& short on windows) {then your code willend up squishedagainst the sidelikethis
}

如何在C / Objective-C中跨多行拆分字符串文字?相关推荐

  1. 如何在javascript中使用多个分隔符分割字符串?

    如何在JavaScript中使用多个分隔符拆分字符串? 我正在尝试在逗号和空格上进行拆分,但是AFAIK,JS的拆分功能仅支持一个分隔符. #1楼 对于那些想要在拆分功能中进行更多自定义的人,我编写了 ...

  2. 温故知新MySQL--如何在MySQL表中删除重复行

    2019独角兽企业重金招聘Python工程师标准>>> 如何在MySQL表中删除重复行 在实际应用中,会有需要删除重复数据的场景.这里简单介绍下如何删除重复的数据 1. 准备数据 C ...

  3. 如何在Pandas的DataFrame中的行上进行迭代?

    本文翻译自:How to iterate over rows in a DataFrame in Pandas? I have a DataFrame from pandas: 我有一个来自熊猫的Da ...

  4. textarea选中行删除_Easy Data Transform如何在Excel中删除重复的行?

    Excel用户经常希望删除具有重复值的行.例如,要删除包含重复电子邮件的行,那么Easy Data Transform如何在Excel中删除重复的行?下面一起来看看吧. 先在您的Mac上安装Easy ...

  5. lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串

    lineseparator JDK 7在java.lang.System类上引入了一个名为lineSeparator()的新方法. 该方法不期待任何参数,并返回一个String ,它表示"取 ...

  6. java 字符串文字筛选_拜托,Java。 最终是否支持多行字符串文字

    java 字符串文字筛选 我了解Java语言的思想很难以向后兼容的方式进行维护. 我知道JDK API(例如集合)的想法很难打破. 是. 我不明白为什么Java 仍然没有多行字符串文字. 您多久编写一 ...

  7. 首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串

    JDK 7在java.lang.System类上引入了一个名为lineSeparator()的新方法. 该方法不期待任何参数,并返回一个String ,它表示"取决于系统的行分隔符字符串.& ...

  8. 拜托,Java。 最终是否支持多行字符串文字

    我了解Java语言的思想很难以向后兼容的方式进行维护. 我知道JDK API(例如集合)的想法很难打破. 是. 我不明白为什么Java 仍然没有多行字符串文字. 您多久编写一次这样的JDBC代码(或您 ...

  9. php分割文本读入数组,PHP fgets按行读取字符串和explode分割字符串为数组

    PHP fgets按行读取字符串和explode分割字符串为数组 file.txt 类型|所在目录|文件|大小|创建时间 File|C:\Program Files\Java\jre7\lib\zi\ ...

最新文章

  1. BST(binary search tree)类型题目需要用到的头文件binary_tree.h
  2. Codeforces757E.Bash Plays With Functions(积性函数 DP)
  3. c++ template笔记(2)模板类
  4. python处理 ctrl+c
  5. Docker学习一:Docker简介与安装
  6. Markdown 笔记神器 Typora 如何上传本地图片(图床功能)?
  7. yaw公式_横摆角速度(Yaw Rate)估算(上)
  8. Swing交通罚单管理系统java车辆违章缴费金额查询交警信息jsp源代码Maven数据库mysql
  9. 漫谈TCP High Speed与TCP Africa(TCP China)
  10. oracle 18c 转 11g,安装Oracle:Oracle 18c、Oracle 11g
  11. 柔宇科技掀起的柔性电子潮流,正在加速改变我们的生活
  12. 飞腾发布高可扩展芯片腾云S2500 开启多路服务新时代
  13. 大觉寺到鹫峰线路_体验古香道---从大觉寺过鹫峰到妙峰山涧沟村
  14. 一份非常适合收藏的Android进阶面试题!附面试题答案
  15. 刨根究底字符编码之六——简体汉字编码中区位码、国标码、内码、外码、字形码的区别及关系
  16. 高分难题,绝对有难度
  17. 虫师 python_python学习虫师笔记 (一)
  18. MSN空间日志发布项灰色解决方法
  19. C# 发送xml报文到用友U8生成凭证系列四(Biz代码)最终代码
  20. Ayoa网页端与移动端在线思维导图软件

热门文章

  1. 压缩UI深度的代码实现
  2. Microsoft Azure WebSite创建网站
  3. Struts中ActionActionForm
  4. 297 - Quadtrees
  5. Database2Sharp重要更新之生成Winform框架界面代码
  6. HelloDjango 第 08 篇:开发博客文章详情页
  7. URL different URI
  8. 米勒罗宾素数判定(模板)
  9. python == 字符编码
  10. Spring整合Quartz实现持久化、动态设定时间