BlinCT
19 декабря 2018 г. 17:45

Парсинг std::string

с++

Всем привет.
Может кто знает, имеется ли в стандарте какая то гибкая возможность распарсить строку по символу?
Предположим если знаем что в заданной строке будет например 2 или 3 слова?
Или может кто подкинет какой то гибкий вариант парсинга?
Спасибо.

2

Вам это нравится? Поделитесь в социальных сетях!

6
Evgenii Legotckoi
  • 19 декабря 2018 г. 17:50

Привет!

В смысле сделать split строки, чтобы разбить на несколько строк?

Это пойдёт?

  1. #include <sstream>
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8. vector<string> strings;
  9. istringstream f("one;two;three;four");
  10. string s;
  11. while (getline(f, s, ';')) {
  12. cout << s << endl;
  13. strings.push_back(s);
  14. }
  15. }
    BlinCT
    • 19 декабря 2018 г. 18:13

    Да, имел виду именно split.
    Такой вариант знаю, но вот раскидать на разные переменные? Например если будет строка "one;two"?

      Evgenii Legotckoi
      • 19 декабря 2018 г. 18:19

      На какие переменные раскидывать?
      уже знаешь входные переменные?
      или не знаешь?
      хочешь получить информационную структуру или что-то ещё?

      ну есть такая строка "one;two" , а что в результате-то должно получиться? из вопроса это не ясно.

        BlinCT
        • 19 декабря 2018 г. 19:47

        Сорян, без уточнения задал вопрос. Ну на выходе мы должны получить
        str1 = "one"
        str2 = "two"

          Evgenii Legotckoi
          • 19 декабря 2018 г. 19:49
          • Ответ был помечен как решение.

          ну.... перепиши так

          1. #include <sstream>
          2. #include <iostream>
          3. #include <vector>
          4.  
          5. using namespace std;
          6.  
          7. int main() {
          8. vector<string> strings;
          9. istringstream f("one;two;three;four");
          10. string s;
          11. while (getline(f, s, ';')) {
          12. cout << s << endl;
          13. strings.push_back(s);
          14. }
          15. string str1 = strings[0];
          16. string str2 = strings[1];
          17. }
            Evgenii Legotckoi
            • 19 декабря 2018 г. 19:50
            • (ред.)

            ты получаешь вектор разбитых строк, а потом делай с ними, что хочешь.

            Если знаешь в какой последовательности идут данные, то и распихивай строки из вектора по переменным, как тебе угодно.

              Комментарии

              Только авторизованные пользователи могут публиковать комментарии.
              Пожалуйста, авторизуйтесь или зарегистрируйтесь