Не полный перенос строки в потоке ввода

186
15 октября 2018, 18:00

Нужно отформатировать номер телефона в формате +XXX-YYY-ZZZZZZ и распределить по аргументам номера страны, региона и области, при этом номера между '-' не должны быть пустые, но в номере может быть и не число. Я попытался сделать через поток:

stringstream s(international_number);
TestChar(s, '+');
int num = 0;
s >> num;
PhoneNumber::country_code_ = to_string(num);
TestChar(s, '-');
num = 0;
s >> num;
PhoneNumber::city_code_ = to_string(num);
TestChar(s, '-');
getline(s, PhoneNumber::local_number_);

Где TestChar:

istream& TestChar(istream& s, const char& symb){
if (s.peek() != symb) {
    throw invalid_argument("a");
}
s.ignore();
if (s.peek() != '1' && s.peek() != '2' && s.peek() != '3' && s.peek() != '4' &&
    s.peek() != '5' && s.peek() != '6' && s.peek() != '7' && s.peek() != '8' &&
    s.peek() != '9' && s.peek() != '0') {
    throw invalid_argument("b");
}
return s;

Но таким способом в аргументы можно перенести только цифры( даже если убрать проверку на цифры в TestChar, то все равно результат не изменится), т.к, если попытаться перенести из stringstream в string, а не в int, то он переносит туда всю строку из потока. Собственно, в этом и вопрос: можно как-то перенести из потока не всю строку в аргумент?

READ ALSO
проблема с файлом glut.h

проблема с файлом glut.h

Здраствуйте, при написании кода на OpenGL, у меня возникла проблема с файлом gluth

148
SSPI идентификация

SSPI идентификация

Делаю идентификацию и аутентификацию пользователя через SSPI

163
Не получается записать данные с html-формы в базу данных

Не получается записать данные с html-формы в базу данных

пытаюсь реализовать простейшую запись данных формы в бдПри нажатие кнопки submit данные отправляются но в базу не записываются, а сервер возвращает...

176
Mustache. Проитерировать коллекцию объектов в .mustache

Mustache. Проитерировать коллекцию объектов в .mustache

если в books передать массив значений все работает:

135