Строка в C++ Ошибка с типами данных

Из строки 3257,3,2,7,8,,, 7,7 97 найти первое число, в данном случае это 3257. Вывод нужен именно целочисленный.

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a=0,s=0;
    string h="3257,3,2,7,8,,, 7,7 97",g="",l="";
    for (int i=0;i<h.size();i++){
        g=h[i];
        if (g==" " || g==",") {
            break;
        }
        else{
            l.push_back(h[i]);
        }
    }
    for (int i=0;i<l.size()-1;i++){
        g=l[l.size()-1-i];
        s+=g*pow(10,i);
    }
}

Возникает ошибка на 18 строке.

|18|error: no match for 'operator*' (operand types are 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' and '__gnu_cxx::__promote_2<int, int, double, double>::__type {aka double}')|

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

Автор решения: Zhihar
s += g * pow(10, i);

g - Это строка, а вы ее на что-то умножить хотите - это как?

for (int i=0;i<l.size()-1;i++){
    g=l[l.size()-1-i];
    s+=g*pow(10,i);
}

этим кодом вы хотите строку перевести в число, но это жуткий изврат или такое задание?

std::stoi вас не устраивает для этой цели?

если же нужен именно изврат, то ваш код должен выглядеть тогда так:

for (int i=0;i<l.size();i++){
    const char letter=l[l.size()-1-i];
    const int digit = letter - '0';
    s+=digit*pow(10,i);
}

т.е. у вас и в этой строке ошибка

for (int i=0;i<l.size()-1;i++){

и надо

for (int i=0;i<l.size();i++){
→ Ссылка