2016-09-29 84 views
-1

我想,我已经解析与空间成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++,所以我可能是错的,我不知道该如何解决这个问题。任何帮助将不胜感激。

+0

相关/欺骗:http://stackoverflow.com/questions/17724925/parse-string-containing-numbers-into-integer-array – NathanOliver

+0

'INT intNum [大小];' - 如果'size'是一个变量(不是常量),那么这不是合法的C++。指定数组中的条目数时,C++需要常量。 – PaulMcKenzie

+0

我该如何做到这一点,以便数组将非常适合整数的大小。我只能制作一个很大的数组,然后我不得不缩短它。 – TitustheTitan

回答

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++; 
    } 
} 
+0

我可能会使用那个stringstream编辑。谢谢! – TitustheTitan