Только начал изучать С++, возникла сложность. Необходимо присвоить определенному элементу массива значение. Делаю так:
for (int i = 0; i < 256; i++) {
if (&inp_str[i] == "=" && &inp_str[i + 1] == "=") {
out_str[start_out] = "=";
start_out++;
}
При попытке присвоить значение элементу массива возникла ошибка:
[bcc32 Error] File1.cpp(18): E2034 Cannot convert 'char const[2]' to 'char' Full parser context File1.cpp(11): parsing: int main(int,char * *)
Как правильно нужно сделать? Спасибо за внимание
ну если я правильно понял то массивы у тебя char?
Если да то вот пару ошибок у вас.
Во первых вы сверяете 1 символ из массива со строкой!
В С++ в двойных кавычках это строка! к ней добавляется завершающий нуль символ.
То есть вы сверяете символ из массива с 2 символами из строки "=".
В С++ символ должен быть в одинарных кавычках '='.
А то у вас получается что вы сверяете к примеру символ '=' с 2 символами '=' и '\0'.
Во вторых вы берёте не символ из массива, а пытаетесь получить адрес адрес ячейки массива в которой хранится символ и сверить со строкой.
Символ & в С++ означает взятие адреса.
Ваш код должен выглядеть примерно так.
for (int i = 0; i < 256; i++) {
if (inp_str[i] == '=' && inp_str[i + 1] == '=') {
out_str[start_out] = '=';
start_out++;
}
}
У вас в сообщении ошибки так и написано что компилятор не может с конвертировать символ из массива в 2 символа из строки "=" что бы потом сверить их.
В C/C++ есть разница между одинарными и двойными кавычками. В динарные кавычки заключаются одиночные символы (char
), а в двойные - строки, массивы символов (char[]
). Вы берёте i-й элемент массива (char
) и пытаетесь сравнить его со строкой (а в третьей строке вообще пытаетесь присвоить строук символу). С точки зрения C++ вы сравниваете (и присваиваете) разные типы (символ и массив символов), которые нельзя привести друг к другу (даже несмотря на то, что в вашем массиве всего один символ (на самом деле два, '=' и '\0', нуль-терминатор, отмечающий конец строки)). Для того, чтобы ваш код заработал, нужно брать символ = в одинарные кавычки.
Ещё добавлю, что для сравнения строк (массивов символов) в C есть функция strcmp
. А ещё в C++ есть класс string
, который позволяет работать со строками более удобно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу понять как заставить генератор случайных чисел давать дробные значенияПробовал сделать так