@Bratis4ka

Как сравнивать элементы массива, на который указывает указатель?

У меня есть указатель на массив:
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]?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@KotomeNami
Например как-то так:
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"; }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
1. Нельзя сравнивать std::string с char, только со строкой.

2. workAdress->length() просто вернёт длину первой строки в массиве. Либо храните длину отдельно, либо используйте вектора
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы