C++有一個名爲'fixed'的I/O操縱器,以固定(非科學)形式輸入/輸出浮點數。它對輸出正常工作,但我不明白如何讓輸入正常工作。如何爲istream/istringstream使用'fixed'floatfield?
考慮這個例子:
#include <sstream>
#include <iostream>
using namespace std;
int main() {
double value;
istringstream("1.4e1") >> fixed >> value;
cout << value << endl;
}
在我看來,它應該像這樣工作。輸入流有一些字符串。當我們在其上應用fixed
機械手並嘗試讀取double/float時,它應停止在不是數字或點的第一個字符上(點不能被接受的次數/次數/次數)。所以,正確的輸出將是1.4
(當我們遇到'e'
時,我們停止處理輸入)。這個代碼輸出14
。爲什麼?它如何工作以及輸入流的fixed
的用途是什麼?我怎樣才能從輸入流中讀取一個double並在'e'
處停留(將其保留在輸入流中)?
'std :: fixed'沒有輸入流的目的。算術格式化操縱器都不能用於輸入流。 – 0x499602D2
@ 0x499602D2好的,謝謝。解決方案呢?有沒有簡單的方法(無需編寫解析器)讀取double,在輸入流中保留'e'? – JIghtuse
顯然沒有簡單的方法。我正在瀏覽提取器的代碼,並且似乎沒有辦法阻止解析器使用'e'或'E'。你必須把它讀入一個字符串並解析自己。 – 0x499602D2