C++按空格解析string字符串,获得子串

比如字符串格式为“Create <RoomName> <MaxParticipants> [Password]”,需要按照空格依次解析出“Create”“<RoomName>”“<MaxParticipants>”“[Password]”几个子串。

代码如下:

#include<iostream>
#include<sstream>
#include<string>
#include<vector>
int main()
{
    std::string message="";
    std::cout<<"Input whole line:"<<std::endl;

    //从一行字符串中,按空格分隔开子串
    std::getline(std::cin, message);//获取一行输入
    std::cout<<"Your input is:"<<message<<std::endl;
    std::vector<std::string> substrings;
    std::string token;
    // 使用 std::istringstream 进行字符串流处理(需要sstream头文件)
    std::istringstream iss(message);
    std::cout<<"The substrings split by " "are:"<<std::endl;
    //按空格提取子串
    while(iss>>token)
    {
        substrings.push_back(token);
    }
    // 输出解析结果
    for (const auto& str : substrings) {
        std::cout << str << std::endl;
    }
    return 0;
}

message中保存了输入的一行字符串,通过(iss>>token)把子串获取到token中,再把token存进substrings向量。

运行结果示例如下:

输入为“JOIN bestroom 3 2839ahs 很好!”,依次获得子串“JOIN”“bestroom”"3""2839ahs""很好"