Fortran Coder

查看: 3033|回复: 2
打印 上一主题 下一主题

[讨论] 递延长度字符串数组如何表示?

[复制链接]

147

帖子

42

主题

1

精华

宗师

F 币
1295 元
贡献
630 点
跳转到指定楼层
楼主
发表于 2022-7-1 10:38:07 来自移动端 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 weixing1531 于 2022-7-1 23:52 编辑

目前递延长度字符串功能已经十分接近VBA中可变字符string类型了,但递延长度字符串数组如何表示呢?
我目前想到的办法就是派生类型封装一下

[Fortran] 纯文本查看 复制代码
type::string
  character(len=:),allocatable::str
end type


[Fortran] 纯文本查看 复制代码
type(string)::a(4)
a(1)%str="hi"


很想直接
[Fortran] 纯文本查看 复制代码
character(len=:),allocatable::str(4)

但编译器会报错
请问有没有更好的办法?




分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

737

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
704 元
贡献
361 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2022-7-2 09:24:38 | 只看该作者
intel fortran 的论坛上有人提过这问题。steven大神说只能用派生类型。
https://community.intel.com/t5/I ... riables/td-p/787190
我感觉还好,起码这个派生类型是个通用的。

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
板凳
发表于 2022-7-11 10:15:19 | 只看该作者
1、不可能直接用,那样的话相当于c的二级指针,内存不连续,fortran做不到。
2、kind和size都是可分配,这样是可以的,但需要二者同时分配,也就是不能实现递延,只能固定长度。
[Fortran] 纯文本查看 复制代码
program Test
implicit none
character(:),allocatable:: str(:)
allocate(str,source=['abc','12345'])

print*,len(str(1)), str(1)
print*,len(str(2)), str(2)

end program


您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-25 01:30

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表