比如字符串格式为“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""很好"