Warm tip: This article is reproduced from serverfault.com, please click

其他-字符串文字中的转义序列(Fortran)

(其他 - Escape sequence in a string literal (Fortran))

发布于 2020-10-23 05:21:35

C ++中有一个例子

string str;
str = "First\n"
      "Second\n"
      "Third;\n";
cout << str << endl;

输出将是

First
Second
Third;  

我想尝试在Fortran中重复它,却没有像在C ++中那样在char字符串中找到有关转义序列的任何信息。

Questioner
Anton Golovenko
Viewed
11
amzon-ex 2020-10-23 13:58:18

一种方法是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"