С++ Хочу вытащить знак из string'a в char но максимально лаконично. Это маленький фрагмент из-за которого дальше не могу делать задание

string buf = "12+5";
int nch = 1;
char* sign = new char[nch];
for(int i = 0; i < buf.length(); i++) {
    if (buf[i] == *"+"){
        sign[i] = buf[i];
    }
}

Ответы (1 шт):

Автор решения: KoVadim

Я думаю, что Вам поможет такой кусочек кода

int main() {
    std::string s = "15+3";
    int x = s.find_first_of("+-");
    std::cout << "index " << x << ", char " << (x == std::string::npos?'X':s[x]);
}

функция find_first_of находит первое вхождение любого из символов в переданной строке и возвращает его индекс. Если не нашло - npos.

Но если "лаконично" подразумевает как можно меньше кода, тогда можно посмотреть на аналогичную сишную функцию strpbrk:

std::string s = "15+3";
const char* p = strpbrk(s.c_str(), "+-");
if (p != nullptr) {
    std::cout << *p;
}

но этот способ не рекомендуется в с++

→ Ссылка