c ++将字符串转换为int

Dan*_*nny 0 c++ string int

//sLine is the string
for(int l = 0; l < sLine.length(); l++)
{
    string sNumber;
    if(sLine[l] == '-')
    {   
        sNumber.push_back(sLine[l]);
        sNumber.push_back(sLine[l + 1]);
        l++;
    }
    else if(sLine[l] != '\t')
    {
        sNumber.push_back(sLine[l]);
    }
    const char* testing = sNumber.c_str();
    int num = atoi(testing);
    cout << num;
}
Run Code Online (Sandbox Code Playgroud)

我有这个for循环,它检查字符串的每个字符,并将此字符串中的每个数字转换为int.但由于某种原因,atoi功能正在做两次,所以当我玩它时,由于某种原因显示它两次......为什么会这样?

例如:INPUT 3 3 -3 9 5
-8 -2 9 7 1
-7 8 4 4 -8
-9 -9 -1 -4 -8

输出3030-309050 -80-20907010
-70804040-80
-90-90-10-40-80

Moo*_*uck 10

它显示了所有nonrecognized字符的零,因为atoi回报0给当一个非数字字符串(如空间!)

但是,你想要做的事情非常简单:

std::stringstream ss(sLine);
int num;
while(ss >> num) {
    cout << num;
}
Run Code Online (Sandbox Code Playgroud)