Другие языки программирования и технологии
Как инициализировать поля класса типа 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;
}
#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;
}
Рустам Хайдаров
да я на скорую руку писал, без компилятора, и не такой опытный как ты, да и с синами/сиаутами у меня косяки бывают xd
во что загружается строка?
Как же это просто делается в Qt
QStringList list=strin.split(":");
ну а потом int hh=list.at(i).toInt;
Как же это просто делается в Qt
QStringList list=strin.split(":");
ну а потом int hh=list.at(i).toInt;
разбиваешь строку на подстроки, на си++ по моему встроенной функции нет, так что придётся либо циклом разбивать либо ещё как, поищи аналоги джававого split и пхпшного explode, полученые подстроки преобразовать в инт через atoi или StrToInt
тебе надо тупо вытащить из строки числа и запихать их в интовые переменные? Если так, то что-то вроде этого:
#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;
}
#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;
}
Похожие вопросы
- Как преобразовать тип string к типу int? C++
- C# почему когда создаю тип данных byte - он его автоматически преобразовывает в тип int?
- Создать класс типа круг. C++
- Как в Visual C++ 2008 express перевести тип int в string или char?
- Как на C++ создать массив типа int из стольких элиментов, что бы значение бралось из перемнно count ?
- Как в C# инициализировать массив в свойстве класса?
- C++ Про выбор типа данных. Int, char и т. д.
- Что имеется ввиду под 4 байтами у типа данных int?(С++)
- C++ как переменную (signed int) разделить на старший и младший байт, а после записать в 2е другие переменные типа char?
- Доступ к полям другого класса. C# Подробно внутри!