C++ Как преобразовать последние 4 символа массива в целое число?

Я знаю, как преобразовать массив символов, содержащий числа, в целое число с помощью iostream:

char[] ar = "1234";
int num;
ar >> num;

но как мне преобразовать последние четыре символа этого массива в int?

char[] ar = "sl34nfoe11intk1234";
int num;
????;

Есть ли способ указать на элемент в массиве и начать потоковую передачу оттуда?
В идеале я бы начал потоковую передачу с максимального размера массива - 4.


person stack356    schedule 27.08.2011    source источник
comment
Вы уверены, что ar >> num является допустимым кодом C++? Похоже, вы забыли stringstream.   -  person Christian Rau    schedule 27.08.2011
comment
char[] ar также не является допустимым C++.   -  person wilhelmtell    schedule 27.08.2011
comment
@ Кристиан, чувак, ты можешь просто сказать ему, что он не прав. :) Он должен быть новичком, который тоже не знает операций со строками..   -  person Ajeet Ganga    schedule 27.08.2011


Ответы (3)


char* p = ar + strlen(ar) - 4;

Теперь p указывает на '1' из "1234", и вы можете передать p в поток.

person fredoverflow    schedule 27.08.2011

char ar[] = "abc1234";
std::istringstream ss(ar + 3);
int n = 0;
ss >> n;

А еще лучше используйте std::string:

std::string ar("abc1234");
std::istringstream ss(ar.substr(ar.size() - 4));
person wilhelmtell    schedule 27.08.2011

Что о

char[] ar = "sl34nfoe11intk1234";
int num;
(ar + strlen(ar) - 4) >> num;
person erikH    schedule 27.08.2011
comment
Я предположил, что его первый пример работал. (Используя какое-то неявное объявление, поскольку он знал, как...) Моя точка зрения, как и другие, также указывала: увеличьте указатель на четвертый последний символ. - person erikH; 27.08.2011