2012-06-22 56 views
0

我試圖做類似如下:C++字符串INT使用字符串流不準確

stringstream convert1(Model_str.substr(2, 12)); 
cout << (Model_str.substr(2, 12)) << endl; //output = 0.999999 
convert1>>vertex1[VertexCounter]; 
cout << vertex1[VertexCounter] << endl; //output = 0 

有爲什麼把當它變成我的數組它是不是被精確到6位小數理由嗎?

+2

截斷,截斷,截斷。 – chris

+2

你期望得到的'int'究竟是什麼? –

+0

我想要兩個輸出是相同的。所以頂點[VertexCounter]應該是0.999999 – LucasS

回答

2

當您從具有>>的流中提取int時,只要存在可被認爲是int的一部分的字符,它就會讀取。整數不允許小數部分,因此int值中沒有小數點。它從流中讀取0,將其存儲在您的vertex1數組元素中(假設vertex1int的數組),並將剩餘的字符留在輸入緩衝區中以供稍後的讀取操作使用。

如果你想從一個流中讀取浮點字符串,你在最起碼需要讀入,支持浮點值的類型,如floatdouble。無論您獲得預期的準確價值是另一回事。您選擇的目標類型可能無法表示您想要的確切值。

+0

啊,謝謝。使用double而不是int來修復它。謝謝你爲我清理那個:) – LucasS