c++对含有分界字符的字符串处理

在各大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,",");  //将","分隔符置空。
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值