2012-11-15 97 views
2

我想從用戶輸入製作雙精度矢量。這些代碼行通常都是我希望他們做的,除了兩種情況,如果還有更多請告訴我。這兩種情況是如果有兩個或更多的小數位,以及是否有一個或多個空格。第二個小數位用作空格。因此,如果用戶輸入:0.2.0.1或0.2 0.1,那麼對於兩個實例我都會得到兩位小數,他們將是0.2和0.1。請幫助我。我想確保我正確地完成這個簡單的任務。我在C++中這樣做。將字符串轉換爲double,而字符串具有N個小數,C++

任何其他建議都比歡迎。

for(int i = 0; i <= ARRSIZE; i++) 
{ 
    cout << "Please enter a decimal value: "; 
    if (cin >> sumScores) 
    { 
     scoresVector.push_back(sumScores); 
     cin.clear(); 
     cin.ignore(); 
    }else 
    { 
     cout << "This is not a double\n"; 
     scoresVector.push_back(0); 
     cin.clear(); 
     cin.ignore(); 
     cin.ignore(numeric_limits<streamsize>::max(), '\n'); 
    } 
} 

回答

3

有更好的解決方案來處理行式輸入,但它們都需要一些額外的代碼。最簡單的方法是使用std::getline來讀取一行,並使用字符串流來分析它們。

for (int i = 0; i <= ARRSIZE; i++) { 
    std::cout << "Please enter a decimal value: " << std::flush; 
    std::string s; 
    if (!std::getline(std::cin, s)) 
    break; 

    std::istringstream is(s); 
    double d; 
    if (is >> d >> std::skipws && is.eof()) { 
    scoresVector.push_back(d); 
    } else { 
    std::cout << "This is not a double\n"; 
    scoresVector.push_back(0); 
    } 
} 
+0

這正是我所需要的。我會經常使用它,謝謝! – KKendall

相關問題