Присвоить значение элементу массива

167
19 декабря 2016, 19:45

Только начал изучать С++, возникла сложность. Необходимо присвоить определенному элементу массива значение. Делаю так:

    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 * *)

Как правильно нужно сделать? Спасибо за внимание

Answer 1

ну если я правильно понял то массивы у тебя 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 символа из строки "=" что бы потом сверить их.

Answer 2

В C/C++ есть разница между одинарными и двойными кавычками. В динарные кавычки заключаются одиночные символы (char), а в двойные - строки, массивы символов (char[]). Вы берёте i-й элемент массива (char) и пытаетесь сравнить его со строкой (а в третьей строке вообще пытаетесь присвоить строук символу). С точки зрения C++ вы сравниваете (и присваиваете) разные типы (символ и массив символов), которые нельзя привести друг к другу (даже несмотря на то, что в вашем массиве всего один символ (на самом деле два, '=' и '\0', нуль-терминатор, отмечающий конец строки)). Для того, чтобы ваш код заработал, нужно брать символ = в одинарные кавычки.

Ещё добавлю, что для сравнения строк (массивов символов) в C есть функция strcmp. А ещё в C++ есть класс string, который позволяет работать со строками более удобно.

READ ALSO
Генератор случайных чисел

Генератор случайных чисел

Не могу понять как заставить генератор случайных чисел давать дробные значенияПробовал сделать так

203