Другие языки программирования и технологии

Как инициализировать поля класса типа int из строки

вводится строка со временем (hh:mm:ss) надо вытащить оттуда секунды, минуты и часы. это все на c++
Без обработки ошибок можно так:

#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>

using namespace std;

int main() {
    int hh, mm, ss;
    char dl;

    // со стандартного ввода
    cout << "введите время в формате hh:mm:ss: ";
    cin >> hh >> dl >> mm >> dl >> ss;
    cout << "введено: " << hh << ':' << setfill('0')
        << setw(2) << mm << ':' << setw(2) << ss << endl;

    // из строки
    string ts("12:13:14");
    istringstream iss(ts);
    iss >> hh >> dl >> mm >> dl >> ss;
    cout << "\nиз строки: " << hh << ':' << setfill('0')
        << setw(2) << mm << ':' << setw(2) << ss << endl;
   
    return 0;
}
Данияр Шакер
Данияр Шакер
83 245
Лучший ответ
Рустам Хайдаров да я на скорую руку писал, без компилятора, и не такой опытный как ты, да и с синами/сиаутами у меня косяки бывают xd
во что загружается строка?
Как же это просто делается в Qt
QStringList list=strin.split(":");
ну а потом int hh=list.at(i).toInt;
разбиваешь строку на подстроки, на си++ по моему встроенной функции нет, так что придётся либо циклом разбивать либо ещё как, поищи аналоги джававого split и пхпшного explode, полученые подстроки преобразовать в инт через atoi или StrToInt
Саня Сигай
Саня Сигай
5 496
тебе надо тупо вытащить из строки числа и запихать их в интовые переменные? Если так, то что-то вроде этого:

#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

using namespace std;

void main()
{
char *tim = new char[256];
int h, m, s, k = 0;
cout << "Vvedite vremya: ";
cin >> tim;
for (unsigned char i = 0; i < strlen(tim); i++)
{
if ((tim[ i ] == ':') && (k == 0))
{
k++;
char *buf = new char[2];
buf[0] = tim[ i - 2 ];
buf[1] = tim[i - 1];
h = atoi(buf);
delete []buf;
continue;
}
if ((tim[ i ] == ':') && (k == 1))
{
k++;
char *buf = new char[2];
buf[0] = tim[ i - 2 ];
buf[1] = tim[i - 1];
m = atoi(buf);
buf[0] = tim[ i + 1 ];
buf[1] = tim[i + 2];
s = atoi(buf);
delete []buf;
continue;
}
}
cout << "\nResult: " << h << " " << m << " " << s;
getch();
return;
}