есть char b[50] = "11 2 6"
или он может быть записан char b[50] = "1 23 6"
как мне вытащить каждое число и записать его отдельно как int
?
Самый простой способ, в стиле си (очень простой, если будет два пробела - будет ошибка, но легко поправить)
int main()
{
char b[50] = "1 23 444";
int i = 0;
int n = 0;
while (true)
{
if (isdigit(b[i])) {
n = n*10 + b[i] - '0';
i++;
continue;
}
if (b[i] == ' ' || b[i] == '\0') {
std::cout << n << '\n';
n = 0;
i++;
}
if (b[i] == '\0') { break;}
}
}
Но можно написать в стиле с++
int main()
{
char b[50] = "1 23 444";
int n;
std::istringstream inp(b);
while(inp >> n)
{
std::cout << n << '\n';
}
}
а добавить это все в вектор или куда захотите, думаю не составит большого труда.
Считывает только числа из вектора а и добавляет их в вектор b.
int main()
{
const int n = 50;
char a[n]{ "123 2 34 5 " };
int b[n];
int k = 0; // количество получившихся чисел
int j = 0;
for (int i = 0;i < n;++i)
{
int num = 0;
bool p = false;
while (a[i] >= '0'&&a[i] <= '9')
{
num = num * 10 + a[i] - '0';
++i;
p = true;
}
if (p)
{
b[j] = num;
++j;
++k;
}
}
for (int i = 0;i < k;++i)
{
cout << b[i] << endl;
}
return 0;
}
А вот еще:
char b[50] = "1 23 444 65 27";
int res[50];
char *v, *p = strtok_s(b, " ", &v);
for (int i = 0; p; ++i) {
res[i] = atoi(p);
p = strtok_s(0, " ", &v);
cout << res[i] << endl;
}
В С++ это делается фактически в одну строчку
char b[50] = "11 22 33";
std::vector<int> v;
std::istringstream strm(b);
std::copy(std::istream_iterator<int>(strm), std::istream_iterator<int>(),
std::back_inserter(v));
Фактически в одну строчку это делается и в С
char b[50] = "11 22 33";
int v[10];
const char *ps;
int *pd;
int n;
for (ps = b, pd = v; sscanf(ps, "%d%n", pd, &n) == 1; ps += n, ++pd);
или
const char *ps;
char *pn;
int *pd;
for (ps = b, pd = v; *pd = strtol(ps, &pn, 10), pn != ps; ps = pn, ++pd);
Разумеется, имеет смысл добавить проверку на некорректный вход.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Надо сделать валидацию перед сабмитом, а после показать блок успешной отправки
Вопрос такой, есть у меня массив из объектов класса, например, MyClass: