€ 来自命令行的符号(参数)



我写了一个简单的euro_to_dm命令行程序,但"€"符号不起作用。每次"dm 到欧元"而不是"€ 到 dm"时,示例都会更改。对不起我的英语。

Ubuntu 19.4 ise-eiffel AND liberty-eiffel

class EURO
inherit ARGUMENTS_32
create {ANY}
make
feature {ANY}
make
do
works_not
end
works_not
local ok: BOOLEAN
do
print ("%N%NAnzahl Argumente : " + argument_count.out + "%N")
print ("%NArgument -> Programmname    : " + argument(0))
print ("%NArgument -> Wert            : " + argument(1))
print ("%NArgument -> Währung         : " + argument(2) + "%N")
ok := argument(2).is_equal("€")     
print ("%NArgument(2) ist Euro ?  " + ok.out + "%N%N")
print ("don't work")
io.put_new_line
if argument(2).is_equal("€") then
euro_in_dm(argument(1).to_real)
else
dm_in_euro(argument(1).to_real)
end
end

feature {ANY}
euro_in_dm (a: REAL)
do
io.put_string("%N Euro -> DM ")
io.put_real(a * 1.95583)
io.put_string("%N%N")
end
dm_in_euro (a: REAL)
do
io.put_string("%N DM -> Euro ")
io.put_real(a / 1.95583)
io.put_string("%N%N")
end
end

要创建清单 Unicode 字符串,您应该使用{STRING_32} "€"

要比较字符串,最好使用same_string,即if s.same_string ({STRING_32} "€") then ...

请注意,使用十六进制值的清单 Unicode 字符的语法{CHARACTER_32} '%/0x20AC/'

要在控制台/终端中输出 Unicode,最好使用encoding库中的LOCALIZED_PRINTER

见 https://www.eiffel.org/blog/jocelyn_fiat/lets_talk_about_the_encoding_library#Write_unicode_into_the_console

这是有效的程序(这是西班牙语)。应将库编码包含在项目中。您不能用打印显示符号€,您应该使用localized_print

class
EURO
inherit
ARGUMENTS_32
LOCALIZED_PRINTER
create
make
feature {ANY}
make
do
works_not
end
works_not
local ok: BOOLEAN
do
print ("%N%NArgumentos                 : " + argument_count.out + "%N")
print ("%NArgument -> Programa         : " + argument(0) + "%N")
print ("%NArgument -> Valor            : " + argument(1) + "%N")
localized_print ({STRING_32} "%NArgument -> Moneda           : " + argument(2) + {STRING_32} "%N")
ok := argument(2).item(argument(2).lower).is_equal ('%/0x000020AC/')
print ("%NArgument(2) ist Euro ?  " + ok.out + "%N%N")
if ok then
euro_in_dm(argument(1).to_real)
else
dm_in_euro(argument(1).to_real)
end
end

feature {ANY}
euro_in_dm (a: REAL)
do
io.put_string("%N Euro -> DM ")
io.put_real(a * 1.95583)
io.put_string("%N%N")
end
dm_in_euro (a: REAL)
do
io.put_string("%N DM -> Euro ")
io.put_real(a / 1.95583)
io.put_string("%N%N")
end

最新更新