Преобразование конкретных символов строки в int
Мне даны 4 строки времени (например 22:38 22:42 23:45 22:39) мне нужно записать значения часов и минут в переменные int hour1, hour2, hour3, hour4, min1, min2, min3, min4. Пробовал stoi(), но оно преобразует все цифры до :, а мне нужно как до, так и после
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
вы алгоритм неправильно составили
разделить строку на массив строк через разделитель " "
строки массива преобразовать уже в связку
int, int
для первого этапа подойдет классistringstream (https://qna.habr.com/q/586289)
для второго этапа подойдет функция sscanf (http://www.cplusplus.com/reference/cstdio/sscanf/)
Автор решения: Yakov
→ Ссылка
#include <iostream>
#include <string>
#include <sstream>
std::string& replace(std::string& s, const std::string& from, const std::string& to)
{
if (!from.empty())
for (size_t pos = 0; (pos = s.find(from, pos)) != std::string::npos; pos += to.size())
s.replace(pos, from.size(), to);
return s;
}
int main()
{
std::string test = "22:38 22:42 23:45 22:39";
int hour1, hour2, hour3, hour4, min1, min2, min3, min4;
std::stringstream ss(replace(test, ":", " "));
ss >> hour1 >> min1 >> hour2 >> min2 >> hour3 >> min3 >> hour4 >> min4;
std::cout<< "hour1="<< hour1 <<" "<< min1 << " hour2= "<<hour2 <<" "<< min2 << " hour3= "<<hour3 <<" "<< min3 << " hour4= "<<hour4 <<" "<< min4;
}