2016-09-27 2 views
0

Скажем, я беру строку ввода, и я хотел проверить, введен ли пользователь отрицательное число.обнаружение отрицательного целого числа в строке

bool isNegative(string input[]) { 
    int i = 0; 
    if (input[i] == "-") { 
     return true; 
    } else { 
     return false; 
    } 
} 

Я попытался булеву функцию, чтобы проверить, если первый символ является - знак, представляющий отрицательные числа -5 например, -25.

Однако мой Netbeans дал мне эту ошибку: main.cpp: 39: 25: ошибка: ISO C++ запрещает сравнение между указателем и целое [-fpermissive]

кто-нибудь знает, что это значит?

+1

Использовать '' -''. использовать минус-символ (а не строку, состоящую из минус-символа). –

ответ

1

Есть две проблемы с вашим кодом:

  • Вы объявляете i, что никогда не меняется. Это то же самое, что и input[0]
  • Вы сравниваете символ с строкой. Вместо "0" (двойные кавычки) вам нужно '0' (одинарные кавычки).

Исправление этих двух проблем позволит исправить ваш код.

Примечание: Вы можете написать эту функцию в одной строке:

bool isNegative(string input) { 
    return input[0] == '-'; 
} 
+0

Предполагая, что 'input' не пуст и не начинается с пробелов. Может возникнуть смысл преобразовать 'string' в' int', а затем проверить '<0'. –

+0

@RemyLebeau Это правда. Я старался максимально приближаться к коду OP. – dasblinkenlight

1

Вы должны использовать одиночные кавычки, которые представляют собой один символ, а не использовать двойные кавычки, которые представляют собой строку.

if (input[i] == '-')