我寫一個程序,它在一個線路輸入如下:解析一個字符串流成字符串和雙打
運行10.1 50.2
其中「運行」是一個字符串,該行的其餘部分是雙打。科學記數法和負數也可以用作雙輸入:例如-5.88e-11(標準C++庫允許這樣做)。
這是我嘗試的初始代碼。
string command;
double input1;
double input2;
getline(cin,input);
stringstream ss(input);
ss >> command >> input1 >> input2;
這種方法的問題是,如果一個空格或字母輸入雙重的地方stringstream的輸出爲0。我相信這是因爲有雙沒有空架在C++中。
我試過的另一種方法是將每個輸入作爲字符串讀取,檢查字符串是否是數字並將其轉換爲double。但是,如果輸入科學記數法和負數,這會變得複雜。嘗試此:
for (int i=0; input1[i]; i++){
if (isdigit(input1[i])){\
isDigit = true;
}else{
isDigit = false;
}
}
如何解析此輸入與字符串和字母數字雙打在同一行? (同時保留底片和科學記數法)
謝謝!
什麼是您遇到麻煩的輸入示例? –
如果給定「運行abc 50.2」,您希望代碼執行什麼操作? – Beta
如果輸入是:從字符串流運行abc 50.2 input1(一個double)將是0.這可能是因爲abc不是有效的double。我正在尋找一種方法來檢查來自stringstream的double是否實際上是double。 – 0000101010