C ++中有一个例子
string str;
str = "First\n"
"Second\n"
"Third;\n";
cout << str << endl;
输出将是
First
Second
Third;
我想尝试在Fortran中重复它,却没有像在C ++中那样在char字符串中找到有关转义序列的任何信息。
一种方法是achar
将ASCII码用于换行,即10
。此方法的优点是,如果你知道ASCII码,则可以根据需要使用其他字符。
character(len=32):: str = "First" // achar(10) // "Second"
给你想要的结果。(注意://
是字符串联运算符)
另一种方法是将其替换为achar(10)
,new_line('a')
并且仅适用于插入换行符。
有趣的是,如果你使用gfortran
,则可以-fbackslash
在编译时使用该选项以使用C样式的反斜杠,如文档中所述:
-反斜杠
将字符串文字中的反斜杠解释从单个反斜杠字符更改为“ C样式”转义字符。以下组合将\ a,\ b,\ f,\ n,\ r,\ t,\ v,\和\ 0扩展为ASCII字符警报,退格键,换页符,换行符,回车符,水平制表符,垂直制表符,反斜杠和NUL。此外,\ xnn,\ unnnn和\ Unnnnnnnn(其中每个n是十六进制数字)被转换为与指定代码点相对应的Unicode字符。以\开头的字符的所有其他组合都不会扩展。
因此,该字符串将简化为
str = "First\nSecond"