2011-10-09 3 views
3

벡터를 정수로 변환하고 싶습니다. 나는 벡터를 사용하여 출력 할 수있다정수 벡터

vector <int> iV; 

iV.push_back(3); 
iV.push_back(8); 
iV.push_back(6); 

copy(iV.begin(),iV.end(),ostream_iterator<int>(cout,"")) 

그러나 이것을 int로 어떻게 얻을 수 있습니까?

EDIT : stringstream을 사용하면 잘하고 있습니다. 나는 그것이 무엇을 닮았는지 정확히보고 싶다. int로 정확한 int를 원하지 않았습니다. 하나의 int를 의미했습니다. 예제에서는 386과 같은 int가됩니다. 감사합니다. 감사합니다. 정말 감사드립니다. 그건 당신이 무슨 뜻인지

std::stringstream strStream; 
copy(iV.begin(),iV.end(),ostream_iterator<int>(strStream,"")); 
int myInt; 
strStream >> myInt; 
+3

이 경우에 'int'가 무엇을 포함한다고 생각하십니까? –

+0

@ IgnacioVazquez-Abrams 그가 cout을 통해보고있는 것과 똑같은가요? –

+0

@Acebond : int로 값 int를 추출 하시겠습니까? 그게 다야? –

답변

0

쓰기 다음

int * ip = &iv[0]; 

ip[0]에 액세스 , ip[1]

+0

고마워요. 아름답고 장엄한 반응 시간. – Acebond

+1

이것은 대단히 효율적이지 않습니다. 왜 문자열을 통해 가야합니까? – Steve

+2

@ 하산 칸 (Hansan Khan) : 상식적 의미는 무언가를 효율적으로 처리하는 것이 쉽거나 쉬운 경우라고 규정합니다. 최소한주의 사항은 좋을 것입니다. – Steve

0

나는 잘 모르겠지만, 당신이 할 수 있습니다 : 그것은 밖으로 지금처럼 읽고 다음 이제 stringstream하고

0
int x; 
for(vector<int>::const_iterator i = iV.begin(); i != iV.end(); i++) 
    x = *i; 
+0

거의 없지만 아주. – Steve

0

int total = 0; 
for(vector<int>::const_iterator i = iV.begin(); i != iV.end(); ++i) 
    total = total*10 + *i; 
+0

이것은 아마도 단일 숫자 int에 대해서만 예상대로 작동합니다. – Peter

+0

@Peter : 예. 나는 무의식적으로 벡터에 숫자가 있다고 가정했다. – Steve

+0

곱하기에 필요한 것은 다음과 같이 계산할 수 있습니다 :'n> 0? std :: pow (10, int (std :: log10 (n) +1)) : 10' (http://ideone.com/9efpn) – UncleBens