有幾種方法可以解決你的問題。最簡單的可能是移出一個直接的cin/cout循環,而是使用std :: getline。具體來說,你可以寫這樣的:
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
int main(int argc, char **argv)
{
vector<int> reftest;
while (true)
{
string input;
getline(cin, input);
// You can do whatever processing you need to do
// including checking for special values or whatever
// right here.
if (input.size() == 0) // empty input string
{
cout << "Assuming you're bored with the Entering Numbers game." << endl;
break;
}
else
{
int value;
// Instead of using the input stream to get integers, we
// used the input stream to get strings, which we turn
// into integers like this:
istringstream iss (input);
while (iss >> value)
{
reftest.push_back(value);
cout << "Inserting value: " << value << endl;
}
}
}
}
其它方法包括cin.getline()(這我不是的,因爲它的工作原理的*不是字符串的字符的大風扇),使用cin.fail( )位以確定傳入值是否有好處等。根據您的環境,獲取用戶輸入的方式可能比通過iostream更豐富。但是這應該指向你所需要的信息。
我寧願用戶能夠簡單地輸入他們的所有號碼,而不是在每次輸入後要求更多。 – Alex 2009-07-05 18:17:18