String 显然无法将字符串附加到另一个字符串

String 显然无法将字符串附加到另一个字符串,string,append,fortran,String,Append,Fortran,我有一个非常简单的问题,我还没有找到答案 是否有任何方法可以将字符(特别是空白)附加到已在Fortran中初始化的字符上 显然 CHARACTER(2000) :: result result = '' result = result // ' ' 不起作用。您想要实现什么?它当然有效,但没有多大用处。尝试在上一个问题中已经建议过的方法。特别要注意的是,所有字符串在最后一个非空格字符后都会填充空格,这一点非常重要 'a'//' ' really produces 'a ' 但是 生成一个2

我有一个非常简单的问题,我还没有找到答案

是否有任何方法可以将字符(特别是空白)附加到已在Fortran中初始化的字符上

显然

CHARACTER(2000) :: result
result = ''
result = result // ' '

不起作用。

您想要实现什么?它当然有效,但没有多大用处。尝试在上一个问题中已经建议过的方法。特别要注意的是,所有字符串在最后一个非空格字符后都会填充空格,这一点非常重要

'a'//' ' really produces  'a '
但是

生成一个2001字符串,该字符串在赋值时被截断,因此
result
最终是相同的

你可能想要

result = trim(result)//' '
但它也没用,因为字符串中还是充满了空格

如果要使变量变大,必须使用:

character(:),allocatable:: result
result = ''  !now contains ' ' and has length 1
result = result//' ' !now contains '  ' and has length 2

您必须在某些处理器上启用分配重新分配。

您好,谢谢您的回答。看起来我可能还有其他一些与编译器相关的问题,因为我在前面发现了一个类似的示例,但正如之前一样,这是我尝试初始化任何变量而不提供静态大小时的输出:编译源代码$gfortran demo.f95-o demo 2>&1 demo.f95:5.14:字符(:),可分配::结果1错误:在(1)demo的字符声明中出现语法错误。f95:48.10:result=''1错误:符号“result”在(1)没有隐式类型获取编译器的最新版本。现在只支持4.6.4、4.7.3和4.8.0。对于可分配字符,我建议使用最新的4.8.0。在4.6中,它们根本不起作用。但是,即使使用普通字符,您也可以执行许多有用的程序,只需确保它们具有固定长度,并填充空格,并且您可以使用
trim
功能。非常感谢您的建议。我明天去拿。顺致敬意,
character(:),allocatable:: result
result = ''  !now contains ' ' and has length 1
result = result//' ' !now contains '  ' and has length 2