Как инициализировать поля класса типа int из строки
вводится строка со временем (hhss) надо вытащить оттуда секунды, минуты и часы. это все на c++
вводится строка со временем (hhss) надо вытащить оттуда секунды, минуты и часы. это все на c++
Без обработки ошибок можно так:
#include
#include
#include
#include
using namespace std;
int main() {
int hh, mm, ss;
char dl;
// со стандартного ввода
cout << "введите время в формате hhss: ";
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;
}
во что загружается строка?
Как же это просто делается в Qt
QStringList list=strin.split(":");
ну а потом int hh=list.at(i).toInt;
тебе надо тупо вытащить из строки числа и запихать их в интовые переменные? Если так, то что-то вроде этого:
#include
#include
#include
#include
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;
}
разбиваешь строку на подстроки, на си++ по моему встроенной функции нет, так что придётся либо циклом разбивать либо ещё как, поищи аналоги джававого split и пхпшного explode, полученые подстроки преобразовать в инт через atoi или StrToInt