Fortran Coder

标题: 一次性读入整个文本到字符串, 包含换行符 [打印本页]

作者: cqflhl    时间: 2024-10-3 22:25
标题: 一次性读入整个文本到字符串, 包含换行符
VB有个命令 readall() 可以读入整个文本到一个字符串
fortran read 好像只能逐行读入, 就算预先设定一个很长的字符串, 读入也是文本的一行, 后面空格
不想用循环逐行读取, 还要截断拼接
不明白换行符也是字符串, 为啥不能一次读入

作者: li913    时间: 2024-10-4 07:18
可以。先查询文件大小,然后用二进制方式打开和读取。
作者: cqflhl    时间: 2024-10-7 11:56
li913 发表于 2024-10-4 07:18
可以。先查询文件大小,然后用二进制方式打开和读取。

差点忘记了流文件这茬

但有个问题, 如果全部读出来之后在一个字符串里, 再从中间读出某个数据就麻烦了
以前每行读的时候
aaa 3
bbb 4
字符串读了, 就接着读数据很容易

aaa 3换行符bbb 4换行符
这样就不好读数了, 好像不能把换行符认为像空格或逗号一类的分隔 自动读出数字
作者: fcode    时间: 2024-10-7 14:55
所以你明白为什么有“有格式”文件读写方式了。

你非要用流文件去读取全部文件内容,那自然“拆分数据”的工作就要由你自己来做。

语法给你提供了“有格式”方式读写文件,你偏不用。
作者: cqflhl    时间: 2024-10-7 20:06
fcode 发表于 2024-10-7 14:55
所以你明白为什么有“有格式”文件读写方式了。

你非要用流文件去读取全部文件内容,那自然“拆分数据”的 ...

我的意思是在先期读入整个字符串的基础上, 再用有格式读取字符串中的内容, 本质和 read(str, *)....  应该是一样的吧,  str 只不过换成了整个文本字符串(包含换行符)
作者: fcode    时间: 2024-10-7 20:27
cqflhl 发表于 2024-10-7 20:06
我的意思是在先期读入整个字符串的基础上, 再用有格式读取字符串中的内容, 本质和 read(str, *)....  应 ...

是的,可以这样,没有问题。
read( str ,  * )
这种用法叫内部文件。

如果你还有其他疑问,请详细描述你的需求。
作者: cqflhl    时间: 2024-10-8 22:10
fcode 发表于 2024-10-7 20:27
是的,可以这样,没有问题。
read( str ,  * )
这种用法叫内部文件。

其实没那么复杂, 本质就是换行符不是Fortran支持的数据分隔符, 比如逗号,空格,制表符
作者: 胡文刚    时间: 2024-10-9 13:28
循环把换行符替换成空格就行了




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2