注册 登录
编程论坛 C++教室

关于字符串分割的问题

yujinxiang19 发布于 2010-10-21 17:10, 473 次点击
我又一串字符:9307|43213|51|58|17|0|1|1|1089
想把每个以“|”分割的数直接转换成int型,该怎样做?
用sscanf(“9307|43213|51|58|17|0|1|1|1089”,"%d|%d|%d|%d|%d|%d|%d|%d|%d", &a,&b。。。。)不行呀!!!
请教各位大虾,谢了!
4 回复
#2
thao1192010-10-22 01:56
回复 楼主 yujinxiang19
先以 “|”为分割点,得到子串,再转换成整型。逻辑清楚,代码也不复杂,楼主可以做到的
#3
m21wo2010-10-22 14:46
程序代码:
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
    string str;
    cout<<"please input a string :"<<endl;
    cin>>str;
    string*  temp;
    int n=str.length();
    int k=0;
    for(int i=0;i<n;i++)
        if(str[i]=='|')
            k++;
    temp=new string[k+1];
    int j=0,s=0;
    for(int i=0;i<n;i++)
    {
        if(str[i]=='|')
        {
            temp[j]=str.substr(s,i-s);
            j++;
            s=i+1;
        }
        if(i==n-1)
            temp[j]=str.substr(s,n-s);
           
    }
    int *a=new int[j+1];
    for(int d=0;d<=j;d++)
    {
        a[d]=atoi(temp[d].c_str());
        cout<<a[d]<<endl;
    }
   
}
#4
hoho5682010-10-22 17:31
程序代码:
using namespace std;

int main()
{
    string str,tmp;
    cin >> str;
    for (int i = 0; i != str.size(); i++)
    {  

        if (str[i] != '|')
            tmp += str[i];
        else
        {
             cout << atoi(tmp.c_str()) << endl;
            tmp = "";
        }
    }
    if (tmp != "")
        cout << atoi(tmp.c_str())  << endl;
    return 0;
}



[ 本帖最后由 hoho568 于 2010-10-22 17:35 编辑 ]
#5
pangding2010-10-22 18:24
就靠 cin >> int 和 cin >> char 不能完成这个工作吗?没仔细想过,但感觉应该行呀。
1