€命令行中的符号(参数)

时间:2019-06-08 09:40:29

标签: eiffel

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

请参阅https://www.eiffel.org/blog/jocelyn_fiat/lets_talk_about_the_encoding_library#Write_unicode_into_the_console

答案 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