如何使用结果长度未知的字符函数?
据我了解,trim()
函数表明可以不指定返回字符串的长度。
例如:
write (*,*) trim(str)
将只返回字符串的一部分,没有尾随空格。
该函数对调用前返回字符串的长度一无所知。
还是
trim()
函数有限制?更多的变体是找到
trim()
函数的原始代码。我找到了 ( Returning character string of unknown length in fortran ) 但这不是我问题的答案。
可以肯定的是,我想编写函数,该函数按整数返回字符串。
像这样的东西:
function strByInt(myInt)
...
write (strByInt,fmt) myInt; return
end function strByInt
somewhere else:
write (*,*) strByInt(50) ! will write '50'
最佳答案
你引用的那个问题部分回答了它。它提到了具有延迟长度的可分配字符。请参阅下面我经常使用的实现:
function strByInt(i) result(res)
character(:),allocatable :: res
integer,intent(in) :: i
character(range(i)+2) :: tmp
write(tmp,'(i0)') i
res = trim(tmp)
end function
结果变量在最后一行的赋值时分配以适合答案。
trim
函数是一个不同的野兽,作为一个内在函数,它不必在 Fortran 中编程,并且可以遵守不同的规则。它只是返回它需要返回的东西。但它可以很容易地实现如上。关于string - 未知长度的字符返回函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22460220/