2015-10-20 6 views
-5
bool fitsKey3(string n) { 
    int ncheck = str.length(n); 
    if (ncheck = KEY3) { 
     return true; 
    } else { 
     return false; 
    } 
} 

Вышеупомянутая функция использует строку «n», которая является строкой, заданной функции из входного файла. Я хочу написать эту функцию, которая проверяет длину этого «кода идентификатора» из входного файла (это проект дроина), и если длина защитного кода равна , равна постоянному целому числу «KEY3 (= 50), она возвращает истину. в противном случае, возвращение ложным.C++ String Length Check

Как исправить эту установку?

+6

Вы используете '=' вместо '=='. –

+0

'ncheck == KEY3',' = 'и' == 'are differemt –

ответ

4

= присваивает значение KEY3 к ncheck.

==ncheck сравнивает и KEY3 равенства.

Кроме того, если вы не платите по строкам коды, я предлагаю использовать более простую и ясную форму:

return n.length() == KEY3; 

(я исправил использование функции length() члена, так как я предполагаю, что это было только опечатка.)

И как указано Anon Mail, если вы не хотите делать копию строки каждый раз, когда вы вызываете эту функцию, я бы предложил только передать ссылку на нее (const, потому что вы не изменяя его):

bool fitsKey3(string const& n) 
+0

Я также предлагаю вам передать строку n по ссылке константы (const string & n) вместо значения. В противном случае вы делаете ненужную копию строки. –

+0

@AnonMail Хорошая точка, спасибо. Добавил это к ответу. – emlai

0

я бы написал так:

bool fitsKey3(string n) { 
    return n.length() == KEY3; 
} 

Вы делаете две операции:

  1. Получить длина строки от n.length()
  2. Сравните длину с KEY3 (NB: используйте == для сравнения)