Строка в 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++){