方法一:
采用函数strtok的方式截取,示例如下:
- #include <stdlib.h>
- #include <iostream>
- using namespace std;
- int main(int argc, char* argv[])
- {
- char buf[] = "$aaaaaa$bbbbbb$cccccc$dddddddd$";
- char *cFlag = "$";
- char *temp = strtok(buf,cFlag);
- while (temp)
- {
- printf_s("%s ",temp);
- temp = strtok(NULL,cFlag);
- }
- printf_s("\n");
- system("pause");
- return 0;
- }
方法二:
采用string的方法截取,示例如下:
- #include <stdlib.h>
- #include <iostream>
- #include <vector>
- #include <list>
- using namespace std;
- void GetSubStr(list<string> &lSubSer,string str)
- {
- string sFlag("$");
- size_t sub_pos1 = 0;
- size_t sub_pos2 = 0;
- size_t strsize = str.size();
- string substr;
- cout << str.c_str() << endl;
- while ((sub_pos2 = str.find_first_of(sFlag,sub_pos1)) != string::npos)
- {
- //开始有特殊字符
- if (0 == sub_pos2)
- {
- sub_pos1 = sub_pos2 + 1;
- continue;
- }
- substr = str.substr(sub_pos1,(sub_pos2 - sub_pos1));
- lSubSer.push_back(substr);
- sub_pos1 = sub_pos2 + 1;
- }
- //末尾有特殊字符
- if (sub_pos1 != strsize)
- {
- substr = str.substr(sub_pos1);
- lSubSer.push_back(substr);
- }
- }
- int main(int argc, char* argv[])
- {
- string sStr("$aaaaaa$bbbbbb$cccccc$dddddddd$");
- list<string> lSubSer;
- GetSubStr(lSubSer,sStr);
- list<string> ::iterator it;
- for (it = lSubSer.begin(); it != lSubSer.end(); it++)
- {
- cout << it->c_str() << endl;
- }
- system("pause");
- return 0;
- }