我写了一个简单的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