gpt4 book ai didi

printing - 如何在Fortran中合并两个字符串

转载 作者:行者123 更新时间:2023-12-04 23:18:13 27 4
gpt4 key购买 nike

这是我想在Fortran中执行的操作的python3示例:

str1 = "Hello"
str2 = " World!"
print(str1 + str2)

# And then the result would be "Hello World!"

当我做:
print "(A)", str1, str2

它将其放在单独的行上。如果有人知道如何帮助,请回答。

最佳答案

使用//运算符的字符串连接的字面答案在另一个答案中给出。请特别注意,您可能希望对第一个参数进行TRIM

但是您的问题还有另一个有趣的概念,那就是格式还原。

使用(A)格式,我们只有一个格式项。在输出列表str1, str2中,我们有两个输出项。在一般的输出语句中,我们将每个格式项(带有重复计数)应用于相应的输出项。因此,使用第一个格式项str1处理A,并出现一个字符串。

来到第二个输出项str2,我们已经使用了单个格式项,到达格式项列表的末尾。结果是我们看到了这种格式转换:也就是说,我们返回到列表中的第一项。至关重要的是,之后,我们开始了一条新生产线。

因此,如果我们只想将这两个项目打印到一行(它们之间没有空格或空白行),则可以使用(忽略修剪以保持清晰度)

print "(A)", str1//str2

或者我们可以使用没有此版本的格式
print "(2A)", str1, str2
print "(A, A)", str1, str2

第一个将两个字符变量连接在一起,给出一个更长的字符变量,然后将其打印为单个输出项。第二个单独打印。

来到你的例子
character(12), parameter :: str1="Hello"    ! Intentionally longer - trailing blanks
character(12), parameter :: str2=" World!"

print "(2A)", TRIM(str1), TRIM(str2)
end

将有输出像
Hello World!

中间的空格,因为 TRIM不会删除 str2中的前导空格。更广泛地说,尽管我们没有领先的空间,但我们想在输出中添加它。

自然地,串联仍然有效(我回到假定不修剪的状态)
character(*), parameter :: str1="Hello"    ! No trailing blank
character(*), parameter :: str2="World!"

print "(A)", str1//" "//str2
end

但是我们可以使用 X编辑描述符选择格式,以添加一个空格
print "(2(A,1X))", str1, str2
print "(A,1X,A)", str1, str2
print "(2(A,:,1X))", str1, str2

其中最后一个具有有用的冒号编辑描述符(此答案的范围之外)。

关于printing - 如何在Fortran中合并两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34622995/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com