Fortran存储连接字符串

use*_*183 2 fortran

我有一个简单的程序:

PROGRAM concatenate

CHARACTER::char*11,name*4

CHARACTER(20)::charname

char='hello there'
name='Fred'

WRITE(*,*) char

WRITE(*,*) name

charname = char // ', ' // name

WRITE(*,*) charname

END PROGRAM
Run Code Online (Sandbox Code Playgroud)

假设我不想提前指定变量charname的长度,因此其长度由char和name的长度自动确定.我可以在Fortran中这样做吗?

谢谢

Hig*_*ark 5

是的,您可以这样声明charname:

character(len=:), allocatable :: charname
Run Code Online (Sandbox Code Playgroud)

并且在charname为其赋值时,编译器/运行时将负责制作正确的长度

charname = char//','//name
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用其他语句自动重新分配它

charname = char//', Mr'//name
Run Code Online (Sandbox Code Playgroud)

这完全取决于您的编译器实现了Fortran 2003的这些功能,但是广泛使用的编译器的所有最新版本都具有.