我编写了一个简单的euro_to_dm命令行程序,但是“€”符号不起作用。该示例每次从“ dm转换为欧元”而不是“€转换为dm”。对不起,我的英语。
Ubuntu 19.4 ise-eiffel和自由-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
答案 0 :(得分:0)
要创建清单Unicode字符串,应使用{STRING_32} "€"
要比较字符串,最好使用same_string
,即
if s.same_string ({STRING_32} "€") then ...
请注意,使用十六进制值的清单Unicode字符的语法为{CHARACTER_32} '%/0x20AC/'
要在控制台/终端中输出Unicode,最好使用LOCALIZED_PRINTER
库中的encoding
。
答案 1 :(得分:0)
这是可行的程序(西班牙语)。您应该将库 encoding 包含到您的项目中。您无法使用 print 显示符号€,而应使用 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