提问者:小点点

将字符串拆分为向量


例如,任何不同于a.b.c.xyza.b.c.xyz-的字符都需要分开并放在向量中。

我怎样才能做到这一点呢?

std::string inputLine;
vector<string> inputs;
getline(std::cin, inputLine);

此时我从用户输入中得到了字符串,如何拆分它呢?

例如:hello,sir my Nameéis ada-m应该放在一个向量中,如下所示

输入。at(0):您好

输入。在(1):先生

输入。在(2):我的

inputs.at(3):名称

Inputs.at(4):is

输入。AT(5):ada-m


共2个答案

匿名用户

这是一个简单的算法

  • 创建字符串的空向量输入
  • 创建空字符串s
  • 遍历输入字符串inputline的每个字符c
    • 如果C'a''b''c'..'x''y''z''a''b''c'..'x''y''z''-'
      • C追加到S
      • S追加到输入(还可以检查S是否为空)
      • 清除s

匿名用户

如果可以使用boost,则可以使用

#include <iostream>
#include <string>
#include <vector>
#include <boost/algorithm/string.hpp>

int main()
{
    std::string line("hello,sir my nameéis ada-m");
    std::string delem = ",| ";
    std::vector<std::string> tokens;
    boost::split(tokens, line, boost::is_any_of(delem));
    for (auto& e : tokens)
    {
        std::cout << e << "\n";
    }
}

您可以在compailer explorer上看到它