为啥很多语言中字符串常量中间不允许换行

那你有一个很长很长的单行文本你打算怎么办?或者你在网上到处 copy-paste 结果因为换行位置不同导致结果错误这不是很尴尬嘛
■网友
设计权衡。一方面来说语言的使用者相比输入换行字符串,更经常出现的情况是忘记打了后边的引号,或者删掉一半的引号,这样到了代码的结尾都变成字符串了。另外,这样设计的话parser好写,直接判断到行末尾就知道这个语句写错了(没写后边的引号)。然后换行符设计成转义符。还有,其实换行和回车换行是平台相关的的,然后直接默认让string支持换行那么你的代码跨平台会出问题,比如OSX(\\r)下的到Windows(\\r\)上会变成一行,windows到linux上的话结尾又会多个不可显示字符。而且这种行内带换行语句在跨平台的时候版本管理工具和编辑器要不要帮你修改行末换行符又是个坑。其实C++的 raw string更多是方便用户写反斜杠的——在输入大量转义符的时候不用写成连续两个反斜杠,至于支持多行字符串,应该顺带的。手机码字,语言不是很清晰,见谅。
■网友
C语言不知道,C++可以。#include\u0026lt;stdio.h\u0026gt;int main(){\tprintf("now,\\it\u0026#39;s a new line.");\tprintf("\");\tprintf(R"(now,it\u0026#39;s a new line.)");}g++ -std=c++11 a.cpp \u0026amp;\u0026amp; ./a.out输出以下内容now,it\u0026#39;s a new line.now,it\u0026#39;s a new line.


    推荐阅读