2016-06-28 3 views
0

Каков наилучший способ сравнения 2 строк для равенства в V +. Есть ли функция стиля strcmp? Можно ли получить значение на основе порядка строк lexicographical?Сравнить 2 строки в V +

ответ

0

Там нет функции зЬгстра, вы можете сделать 2 вещи:

  1. Если вы хотите прямое булево значение вы можете использовать ==:

    $in1 = "lalala" 
    $in2 = "lalala" 
    
    IF $in1 == $in2 THEN 
        TYPE "LALALA" 
    END 
    
  2. Если вы хотите функцию, которая возвращает число, основанное на лексикографическом порядке, которое вам нужно будет написать, достаточно:


.PROGRAM strcmp($a, $b, result) 
     AUTO len.a, len.b, pos 

     len.a = LEN($a) 
     len.b = LEN($b) 
     pos = 1 

     ; Loop to the end of the string that is the same 
     WHILE (pos-1 < len.a) AND (pos-1 < len.b) AND (ASC($a,pos) == ASC($b,pos)) DO 
      pos = pos+1 
     END 

     ; If they are still the same at the end return 0 
     IF (ASC($a,pos) == ASC($b,pos)) THEN 
      result = 0 
      RETURN 
     END 

     ; If $a is -1 then we reached the end of a before b 
     IF (ASC($a,pos) == -1) THEN 
      result = -1 
      RETURN 
     END 

     ; If $b is -1 then we reached the end of b before a 
     IF (ASC($b,pos) == -1) THEN 
      result = 1 
      RETURN 
     END 

     ; Otherwise get the comparison of the current value of $a and $b 
     result = ASC($a,pos)-ASC($b,pos) 
     RETURN 
.END 
Смежные вопросы