Разбить строку на несколько переменных

102
09 марта 2021, 02:50

Есть строки вида 2 -58.0 12 -35.0 1 -8.0 у них динамическая длина. Мне нужно вынуть эти два значения как 2 разных переменных первое число как button, второе как value (вместе со знаком). Как мне это сделать? перелистал кучу форумов, как думаете, этот код сойдёт?

int main()
{
    string button, value;
    string text = s_Text;
    stringstream ss;ss.str(text);
    ss >> button >> value;
    cout << button << endl;
    cout << value << endl;
    return 0;
}
Answer 1

В качестве подхода решения данной задачи можно использовать ваш код примерно таким образом:

#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <utility>
int main()
{
    std::string record = "2 -58.0 12 -35.0 1 -8.0";
    std::vector<std::pair<std::string, std::string>> v;
    std::istringstream is( record );
    std::string button, value;
    while ( is >> button >> value ) v.emplace_back( button, value );
    for ( const auto &p : v ) std::cout << p.first << ": " << p.second << std::endl;
}        

Вывод на консоль:

2: -58.0
12: -35.0
1: -8.0

Или можно использовать числовые объекты:

//...
int main()
{
    std::string record = "2 -58.0 12 -35.0 1 -8.0";
    std::vector<std::pair<int, double>> v;
    std::istringstream is( record );
    int button;
    double value;
    while ( is >> button >> value ) v.emplace_back( button, value );
    for ( const auto &p : v ) std::cout << p.first << ": " << p.second << std::endl;
}        

Вывод на консоль будет таким же, как показано выше

2: -58
12: -35
1: -8
READ ALSO
Как разбить строку по пробелам?

Как разбить строку по пробелам?

Как разбить строку на символ - '\n' вместо пробелов?

169
Boost Asio read/read_untill некорректная работа

Boost Asio read/read_untill некорректная работа

Что то я окончательно запутался, без помощи не могу разобраться: Пытаюсь прочитать ответ от сервера на get запрос, код простой:

121
Google charts слишком широкие на экране телефона

Google charts слишком широкие на экране телефона

На своем Wordpress-сайте я показываю 2 диаграммы при помощи Google Charts и, к сожалению, на экране мобильных устройств они шире, чем ширина экрана:

132
Реализация INPC для статических свойств

Реализация INPC для статических свойств

Есть класс, содержащий статические переменные, например

99