在Fortran
中,在声明期间使用初始值设定项时是否可以自动扣除字符(字符串)的长度?我想要这样的东西(不按原样工作)
character(*) :: a = 'John Doe'
character(:) :: a = 'John Doe'
示例代码
program char
implicit none
character(8) :: a = 'John Doe' !<-automatically?
write(*,*) a
write(*,*) len(a)
end program char
一种正确的方法是使用
character(8) :: a = 'John Doe'
通过简单地计算字符,但这很容易出错。或者,我可以使字符比必要的长度更长并使用 trim()
program char
implicit none
character(100) :: a = 'John Doe'
write(*,*) trim(a)
write(*,*) len(trim(a))
end program char
但是8
可以自动确定吗?我知道这是一个学术问题,但我仍然想知道......
最佳答案
除了@AlexanderVogt使用参数
的解决方案之外,您还可以在Fortran 2003中使用自动分配,如下所示:
character(len=:), allocatable :: name
然后像这样初始化
name = 'John Doe'
并以同样的方式重置
name = 'John Doe Jr'
关于Fortran:初始化期间自动确定字符长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097682/