С++ Хочу вытащить знак из 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;
}
но этот способ не рекомендуется в с++