解析后如何将字符串转换为int数组?

时间:2016-09-29 20:01:29

标签: c++ arrays string int

我正在尝试将已经用空格解析的字符串转换为int数组:

    //example of string before parsing
    arrElement = "1,2,3";

    //parsing
    for(int i =0; i < size; i++){
        if(arrElements[i] == ','){
            arrElements[i] = ' ';
        }
    }
    //string is now "1 2 3"

    //trying to convert numbers only into int
    stringstream str;
    int intCount = 0;
    int intNum[size];
    for(int i = 0; i < size; i++){
        str << arrElements[i];
        if(str == " ") {
        }
        else {
            str >> intNum[intCount];
            intCount++;
        }
    }

我目前得到的结果有五个整数读取,而不是我做的例子中的三个。另外,当我打印出阵列时,我的数字完全不同:

    209664128 32764 0 0 0

我有点理解这个问题,但我是新的c ++,所以我错了,我不确定如何解决这个问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

以下是一些使您的示例正常工作的最小修改。 我认为你应该避免std::stringstream::operator>>std::stringstream::operator<<之间的连续调用。

//example of string before parsing
std::string arrElements = "1,2,3";

//parsing
for(int i =0; i < arrElements.size(); i++){
    if(arrElements[i] == ','){
        arrElements[i] = ' ';
    }
}
//string is now "1 2 3"

//trying to convert numbers only into int
stringstream str(arrElements);
int intCount = 0;
static const int size = 3;
int intNum[size];
for(int i = 0; i < size; i++){
    if(str == " ") {
    }
    else {
        str >> intNum[intCount];
        intCount++;
    }
}