Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

Получить два числа из строки C++

Есть строка формата "123,456,123,23,789,67". 6 чисел разделены запятыми. Необходимо получить 2 последних числа в переменные типа int
Проблема решается легко при помощи sscanf()
#include
int main(int argc, char* argv[]) { char buf[] = "123,456,123,23,789,67"; int a1, a2, a3, a4, a5, p1, p2;
sscanf(buf, "%d,%d,%d,%d,%d,%d", &a1, &a2, &a3, &a4, &p1, &p2);
return 0; }
Вопрос: Как решить эту проблему при помощи iterator'ов и методов класса string?


Ответ

Для начала можно разбить строку на подстроки. Вариантов реализаций этого (фактически - метод split) - вагон и маленькая тележка. Приведу один, совсем примитивный, для примера:
#include #include #include
std::vector split(std::string & s, char delimeter) { std::stringstream ss(s); std::string item; std::vector tokens; while (std::getline(ss, item, delimeter)) { tokens.push_back(item); } return tokens; }
Соответственно,
std::string s("123,456,123,23,789,67"); std::vector tokens = split(s, ',');
Ну а что делать с получившимся вектором - уже творчески :)

Комментариев нет:

Отправить комментарий