在各大oj上(小米oj尤为突出)经常会出现给定某字符串,要求其被某种字符所分割形成整形数组。例如将1,3,6,4,9,8按 “,” 分割为整形数组。我自己一般用 这两种方案。
方案一:利用输出流处理,它是通过空格来读取字符,因此应将分隔符 “,” 化为分割符" ",具体解释见代码。
getline(cin,s);
int dotNum = 0; //标点数
for(int i = 0;i<s.length();i++) //遍历s数组将分割符",",改为分割符" "。
if(s[i]==';'||s[i]==',') {
s[i] = ' ';
dotNum++;
}
stringstream ss;
ss << s;
ss>>m; //一个分割符" "读取第一个字符,其他字符类似读取。
方案二:利用strtok函数对串按分隔符将其读入指针中,将字符串转为整形数字,同时将原分割符处置NULL。具体解释见代码。
int v;
char *p = strtok(buf,","); //依据分割符","向指针p读入数据。
while(p){
sscanf(p,"%d",&v); //字符串转整形
num.push_back(v);
p = strtok(NULL,","); //将","分隔符置空。
}