方法一:使用stringstream类
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string s;
while (cin >> s)//输入一串用逗号分隔的字符串
{
vector<string> vs;
string tmp;
stringstream st;//创建string流对象
st.clear();//清空流错误标志位,以便下一次使用,但是没用不会清空使用的内存空间
st.str("");//清空string流对象,清空内存,占用大小置0
st.str(s);//用s作为st流中的内容
while (getline(st, tmp, ','))//从st流中按逗号为分隔符读取数据存储tmp中,直到流结束
vs.push_back(tmp);
for (string x : vs)
cout << x << endl;
}
return 0;
}
string str() const;//返回一个string对象,使用流中当前内容的副本
void str (const string& s);//用s对象设置流中的内容,并抛弃之前的内容
附注:stringstream类在类型转换方面的用法:
如将字符串转换为数字,数字转换为字符串。
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string s;
stringstream st;
int n = 11, m = 88;
st << n;//将11放入流中
st >> s;//从流中提取数据到s中,自动类型转换,无需关心类型问题
cout << s << endl; //11
s += "23";
cout << s << endl;//1123
st.clear(); st.str("");//清空,以便下一次使用
st << s;
st >> n;
cout << n << endl;//1123
return 0;
}
方法二:使用strtok函数
具体参考该函数的手册,该函数就是针对分隔符而诞生的,但是会破坏原始字符串。
sscanf(input, “%d,%d”, &disk, &mem);