Как сравнивать элементы массива, на который указывает указатель?
У меня есть указатель на массив:
std::string* workAdress;
В нём, допустим лежат следующие элементы {"27", "3","+" }
Дальше идёт цикл по длине массва, в котором if должен находить знак '+'
for(int i = 0 ; i < workAdress->length(); i++)
if(workAdress[i] == '+')
{...}
У меня вылетает ошибка:
/home/left/projects/Kalkul/src/Calculator.cpp|35|error: no match for ‘operator==’ (operand types are ‘std::string’ {aka ‘std::__cxx11::basic_string’} and ‘char’)|
Как мне сравнить char с *name[i]?
Bratis4ka , и правильно что вылетает. Это еще меньшая из всех твоих ошибок. Ты используешь размерность строки для индексирования по сырому массиву.
Скажи, зачем тебе сырой массив std::string* workAdress если ты пользуешься стандартными строками?
Почему тебе std::vector[?] не подходит?
Евгений Шатунов, Я только пару месяцев занимаюсь прогой. Пишу проект и постепенно учусь. Я не особо освоил вектора, поэтому делаю через массив. "Ты используешь размерность строки для индексирования по сырому массиву." Что это значит?
Bratis4ka, расскажи, что тебе известно про указатели.
Что такое указатель? Как получить указатель на значение? Как из указателя получить ссылку на значение? Как обратиться к полю экземпляра структуры через его указатель? Как вызвать метод через указатель на экземпляр?
Ну и самое интересное: что такое адресная арифметика?
int count = 3; // здесь у тебя количество элементов в массиве
std::string * obj1 = new std::string[count]; // здесь ты выделяешь под массив память
for (int i = 0; i < count; i++) // заполнение массива тем, что нужно
{
if (0 == i) obj1[i] = "27";
else if (1 == i) obj1[i] = "3";
else if (2 == i) obj1[i] = "+";
else obj1[i] = "XX";
}
for (int i = 0; i < count; i++) // твой цикл
if (obj1[i] == "+") { obj1[i] = "222"; }