如:
string str1 = "This is a test";
string str2 = "This-is-a-test";
string str2 = "This+is+a+test";
我们如何将以上字符串按照某种分隔符( ,-
,+
),将其分割成四个子串,其值分别为 “This” “is” “a” “test” 。
一、使用stringstream流
这里我们只需要用到 istringstream
(字符串输入流) 构造字符串流,然后从字符串流中按照一定的格式读取数据即可。
通常我们使用cin从流中读取数据,而我们也可以使用getline读取,而后者在读取时可以选择接受的数据格式,其函数原型如下:
// istream & getline(char* buf, int bufSize); // 读到
为止
istream & getline(char* buf, int bufSize, char delim); //读到 delim 字符为止
//
或 delim 都不会被读入 buf,但会被从文件输入流缓冲区中取走
因此,我们可以按照此方式设计一个C++中的stringsplit函数。
void Stringsplit(string str,const const char split)
{
istringstream iss(str); // 输入流
string token; // 接收缓冲区
while (getline(iss, token, split)) // 以split为分隔符
{
cout << token << endl; // 输出
}
}
如此,我们就设计出了我们的Stringsplit() 函数。该函数有以下 2 种语法格式
void Stringsplit(string str,const const char split);
// 默认将传入的