2011-10-09 115 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?

編輯:使用stringstream適合我在做的事情。 我確實想看看它通過cout看起來像什麼。 我不想int精確int我的意思是一個單一的int,所以對於我的例子它將是一個int等於386. 感謝大家有幫助真的很感激它。

+3

你會期待'int'在這種情況下包含什麼? –

+0

@ IgnacioVazquez-Abrams與他通過cout看到的相同的東西? –

+0

@Abonbond:你的意思是你想通過int提取int值?是嗎? –

回答

0

寫出來給字符串流,然後從中讀取像這樣:

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

非常感謝。精美的作品和史詩響應時間。 – Acebond

+1

這不是非常有效。爲什麼要通過一個字符串? – Steve

+2

@Hasan Khan:常識意味着,當它有效地完成某件事情時(或更容易),您應該做到這一點。至少有一個警告會很好。 – Steve

0

我不知道,如果這就是你的意思,但你可以這樣做:

int * ip = &iv[0]; 

,然後訪問ip[0]ip[1]

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

當然,這可能只適用於單位數整數的預期。 – Peter

+0

@彼得:是的。我不自覺地認爲矢量包含數字。 – Steve

+0

你需要乘以的東西可能會被計算出來,例如:'n> 0? std :: pow(10,int(std :: log10(n)+ 1)):10'(http://ideone.com/9efpn) – UncleBens