2016-09-29 140 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