разделение одной строки на отдельные переменные c ++ - PullRequest
0 голосов
/ 17 апреля 2020

В моей программе я получаю строку: «09: 07: 38,50,100» (числа будут меняться, только запятые согласуются)

Мой желаемый вывод будет разделять строку на 3 разные переменные для использования в других вещах.

примерно так:

a = 09: 07: 38

b = 50

c = 100

В настоящее время я попытался разбить строку, разделив запятыми, но мне все еще не хватает возможности поместить данные в разные переменные или хотя бы знать, как это сделать. Вот мой текущий код:

#include<iostream>
#include<vector>
#include<sstream>

int main() {
    std::string my_str = "09:07:38,50,100";
    std::vector<std::string> result;

    std::stringstream s_stream(my_str); //create string stream from the string

    while(s_stream.good()){
        std::string substr;
        getline(s_stream, substr, ','); //get first string delimited by comma
        result.push_back(substr);
    }

    for(int i = 0; i<result.size(); i++){ //print all splitted strings
        std::cout << result.at(i) << std::endl; 
    }

}

Спасибо за любую помощь, спасибо!

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Я думаю, что это хорошая идея, чтобы подойти к такой проблеме с помощью регулярных выражений:

#include <string>
#include <boost\regex.hpp>

int main()
{
    std::string my_str = "09:07:38,50,100";

    std::string a,b,c;

    boost::regex regEx("(\\d{2}:\\d{2}:\\d{2}),(\\d*),(\\d*)");

    if(boost::regex_match(my_str, regEx, boost::match_extra))
    {
        boost::smatch what;
        boost::regex_search(my_str, what, regEx);

        a = what[1];
        b = what[2];
        c = what[3];
    }

    std::cout<< "a = " << a << "\n";
    std::cout<< "b = " << b << "\n";
    std::cout<< "c = " << c;
}
0 голосов
/ 17 апреля 2020

Вам нужна функция стои .

a = stoi(result.at(i));
std::cout << a;
...