【发布时间】:2017-11-30 20:23:59
【问题描述】:
我想知道是否可以在 Fortran 中循环字符串。例如我想知道下面的代码:
DO p=a,b,c,t,r
...
END DO
每当写入 p 时将替换 a b c t 和 r。
【问题讨论】:
-
好的,谢谢。我完全理解你的立场。我觉得如果其他人遇到同样的问题,之前的标题“循环字符”在网络上是完全无法搜索的。
我想知道是否可以在 Fortran 中循环字符串。例如我想知道下面的代码:
DO p=a,b,c,t,r
...
END DO
每当写入 p 时将替换 a b c t 和 r。
【问题讨论】:
循环索引始终是一个标量整数。幸运的是,使用所需的“迭代”对象数组是一件足够简单的事情:
character, parameter :: ps(*) = ['a', 'b', 'c', 't', 'r']
integer i
character p
do i=1, SIZE(ps)
p = ps(i)
...
end do
这个成语不仅仅适用于字符。
【讨论】:
或者,如果 string OP 表示长度为 n 的字符变量,则可能有类似
character(len=n) :: string
...
string = 'abcdef'
...
do i = 1,n
write(*,*) string(i:i)
end do
注意,对于任意长度的子字符串(包括1),必须提供开始和结束索引
【讨论】: