经过深入研究,我已经想出了一种在Fortran中实现可变长度字符串列表的自制方案。这实际上是一个自定义类型的数组,它只有一个成员属性,即可变长度字符串。语法有些麻烦,我想知道是否有更好的方法,但我一直没有找到。
这是我的代码:
! scratch.f90
module string_list
type t_string
character(len=:), allocatable :: s
end type
end module
program main
use string_list
implicit none
integer i
type(t_string), allocatable :: list(:)
allocate(list(2))
list(1)%s = "hi my name is"
list(2)%s = "slim shady"
do i=1,2
print *, len(list(i)%s)
end do
end program
编译使用 gfortran 命令,例如:
gfortran scratch.f90 -o scratch
然后:
> ./scratch
13
10
list(1) = ...
而不是list(1)%s = ...
。也许在整个事情的大局中这并不是很重要,但我有一种直觉感觉应该有更好的方法,可能是因为拥有一个只有一个成员的结构体感觉像是不必要的复杂性。显然,在缺乏对这种数据结构的内置支持的情况下,这种复杂性是有用的,也许我正在展示我对我所认为的“应该”可用的偏见,因为我主要在支持此类结构的语言中工作。 - Vince W.