Ваш пример кода имеет один или несколько проблем с ним, если вы пытаетесь распечатать true
. Сколько зависит от того, как вы пытаетесь это сделать. Мои первые два пункта применяются, если вы сравниваете текст с другим текстом. Если вы пытаетесь преобразовать текст в число и сравнить числа, игнорируйте их.
unsigned char a[10]={0,1,2,3,4,5,6,7,8,9}; // 1
string b="5";
if(a[5]==(unsigned char)atoi(b.c_str())){ // 2
count<<true<<endl; // 3
}
1) В то время как это произведет массив беззнаковых символов, они не будут текстовые значения. Значения в этом массиве являются первыми 10 ASCII characters, а не символами, которые производят от 0 до 9 при печати. Эти символы могут быть помещены в ваш массив с кодом:
unsigned char a[10]={'0','1','2','3','4','5','6','7','8','9'};
Опять же, это только при условии, что вы пытаетесь сравнить текстовые данные. Если вы пытаетесь преобразовать в число и сравнить записи в этом массиве с этим числом, вам понадобится исходный массив.
2) Вы правы, что a[5]
получит доступ к шестому элементу a
. Если вы сравниваете текстовые значения, а не числовые значения, вам нужно только получить доступ к первому элементу вашей строки для сравнения. Указано, что строка содержит не менее 1 элемента. Поскольку вы определили его чуть выше этого кода, это нормально, но в случае ввода пользователя вам нужно будет проверить. Правильный синтаксис для этого сравнения, как указано deviantfan, равен a[5] == b[0]
, потому что оператор []
на strings
вернет char
.
Вновь вышесказанное относится к вашему ответу, только если вы сравниваете текстовые значения. Если вы сравниваете числовые значения, исходный код верен.
3) Вы не разместили кавычки вокруг true
. Хотя это будет компилировать и даже печатать что-то - это не будет true
, если не будет выполнено несколько условий, которые вряд ли вы встретите в начале своей карьеры кодирования. То, что вы, вероятно, хотели поставить, - «true», что сделает вывод корректным. Кроме того, вы хотите cout
, а не count
.
Здесь приведен пример link, который сравнивает строку и (модифицированный) символьный массив как текстовые данные. Если вы сравниваете числовые данные, единственное, что не соответствует вашему коду, - это 3).
Это очень, очень неясно, что вы просите. Вы ищете советы по правильному сравнению содержимого строки с содержимым массива символов? – jaggedSpire
@jaggedSpire yes – girl71
Не возражаете, если я отредактирую ваш вопрос, чтобы сделать это более понятным? – jaggedSpire