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

배열을 exatcly 정수 크기를 맞게되도록 어떻게 만들 것입니다. 나는 단지 배열 크기를 그렇게 크게 만들 수있다. 그리고 나는 그것을 결국 줄여야 만 할 것이다. – 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

관련 문제