gpt4 book ai didi

fortran - 如何打印带有引号的 Fortran 字符串?

转载 作者:行者123 更新时间:2023-12-05 08:29:42 24 4
gpt4 key购买 nike

假设我有一个如下所示的 Fortran 程序:

      character*30 changed_string1
changed_string1="hello"
write(*,"(A)")changed_string1(1:3)
end

我想打印带引号的字符串,以便我可以准确地看到前导和尾随空格。如何做到这一点?

最佳答案

没有字符的编辑描述符将它们与分隔符一起输出。字符变量没有像出现在文字字符常量中的那些“自动”定界符(尽管可能将它们作为内容)。

这意味着您必须自己显式打印任何选定的定界符,将它们添加到格式中或像 Vladimir F's answer 中那样连接起来.

同样,您也可以将分隔符添加到输出列表中(使用相应的格式更改):

write (*,'(3A)') '"', string, '"'

您甚至可以编写一个返回“定界字符串”的函数并使用结果在输出列表中:

  implicit none

character(50) :: string="hello"
print '(A)', delimit(string,'"')

contains

pure function delimit(str, delim) result(delimited)
character(*), intent(in) :: str, delim
character(len(str)+2*len(delim)) delimited

delimited = delim//str//delim
end function delimit

end program

上面的函数结果甚至可以是延迟长度(character(:), allocatable::delimited)以避免结果长度的显式声明。


正如 yamajun 在评论中提醒我们的那样,格式化输出的连接具有定界符模式,它允许将引号和撇号自动添加到列表导向和名称列表的输出中输出(仅)。例如,我们可以控制特定数据传输语句的分隔符模式:

write(*, *, delim='quote') string
write(*, *, delim='apostrophe') string

或者对于整个连接:

open(unit=output_unit, delim='quote')  ! output_unit from module iso_fortan_env

不要忘记列表定向输出会将前导空白添加到您的输出中,如果您在字符输出项中有引号或撇号,您将不会看到完全相同的表示(这甚至可能是您想要的) :

use, intrinsic :: iso_fortran_env, only : output_unit
open(output_unit, delim='apostrophe')

print*, "Don't be surprised by this output"

end

Fortran 2018 不允许以这种方式选择任意分隔符,但这仍然适用于某些用途。

关于fortran - 如何打印带有引号的 Fortran 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68729144/

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