如何使用结果最初长度未知的字符函数?
The trim()
据我了解,函数表明可以不指定返回字符串的长度。
例如:
write (*,*) trim(str)
将仅返回不带尾随空格的字符串的一部分。
该函数在调用之前不知道返回字符串的长度。
Or trim()
功能有限制吗?
更多变体是找到原始代码trim()
功能。
我已经发现 (在fortran中返回未知长度的字符串 https://stackoverflow.com/questions/3141709/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
结果变量在最后一行赋值时分配以适合答案。
The trim
function 是一个不同的野兽,作为一个内在函数,它不必在 Fortran 中编程,并且可以遵守不同的规则。它只是返回它需要返回的内容。但它可以像上面一样很容易地实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)