Как отделить строку с помощью «|» как разделитель? Как хранить его в двух переменных - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть строка.

Input:

std::string kind = 0123|0f12;

У нас есть разделитель "|".

Я хотел бы сохранить эти два значения в две переменные. Как я могу это сделать?

Output:
    std::string kind1 = 0123;

    std::string kind2 = 0f12;

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020
std::string kind = "0123|0f12";
std::size_t found = kind.find("|");
if (found != std::string::npos)
{
   std::string kind1 = kind.substr(0,found-1);
   std::string kind2 = kind.substr(found+1);
}
1 голос
/ 30 апреля 2020

Используйте find , substr и erase Функция члена std::string. Попробуйте это:

#include <iostream>
#include <string>
#include <vector>

int main()
{
    std::string s = "0123|0f12";
    std::string delimiter = "|";

    size_t pos = 0;
    std::vector<std::string> vec;
    while ((pos = s.find(delimiter)) != std::string::npos) {
        std::string token = s.substr(0, pos);
        vec.push_back(token);
        s.erase(0, pos + delimiter.length());
    }
    if (!s.empty())
        vec.push_back(s);
    for (const auto& i: vec)
        std::cout << i << std::endl;
    return 0;
}

Вывод:

0123
0f12
...