最近遇到需要对输入string类型数据按逗号或者空格进行分割的情况,但strtok函数要求输入char *类型数据,但我直接接收的是string类型,所以先要对数据类型进行转换,然后再使用。
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
int M=0;//需要拼凑的面值
vector<int> nums;
string coinstr,temp;
char *split = ", ";
while (cin >> temp)
{
coinstr.append(temp);
}
char *str = new char[coinstr.size()];
coinstr.copy(str, coinstr.size(), 0); //这里size代表复制几个字符,0代表复制的位置
*(str + coinstr.size()) = '\0'; //要手动加上结束符
char *p2 = strtok(str, split);
while (p2 != NULL)
{
cout << p2 << endl;
p2 = strtok(NULL, split);
}
return 0;
}