如何重複的std ::函數getline()的用戶數輸入這樣的方法:C++ - 作爲用戶整數輸入重複std :: getline()?
std::string num;
std::cout << "How many subjects you want to sum: ";
std::getline (std::cin,num);
然後取用戶數輸入,重複的std ::函數getline()多次輸入來概括所有的科目標誌着用戶會在第一個問題後輸入。
如何重複的std ::函數getline()的用戶數輸入這樣的方法:C++ - 作爲用戶整數輸入重複std :: getline()?
std::string num;
std::cout << "How many subjects you want to sum: ";
std::getline (std::cin,num);
然後取用戶數輸入,重複的std ::函數getline()多次輸入來概括所有的科目標誌着用戶會在第一個問題後輸入。
不希望使用std::getline
來輸入數字。
你需要的標準模式:
int quantity = 0;
std::cout << "Enter quantity of subjects to sum: ";
std::cin >> quantity;
int sum = 0;
for (int i = 0; i < quantity; ++i)
{
int value;
std::cin >> value;
sum += value;
}
一個常見的數據輸入格式是指定在一行量爲第一數量。
數據將在隨後的行中顯示,通常每行一個數字。
operator>>
將跳過空格(包括換行符)。
編輯1:使用getline
如果必須使用getline
,請記住,它只能在字符串(字符)讀取。如果你想要數字,你將不得不從文本表示轉換爲內部表示。
int quantity;
std::string text_line;
std::cout << "Enter quantity to sum: ";
std::getline(std::cin, text_line);
int sum = 0;
// Extract number from the text
{
std::istringstream text_stream(text_line);
text_stream >> quantity;
}
for (int i = 0; i < quantity; ++quantity)
{
std::getline(std::cin, text_line);
std::istringstream text_stream(text_line);
int value = 0;
text_stream >> value;
sum += value;
}
注意行數的差異。
此外,請注意使用std::istringstream
。它看起來像在第一個例子中使用std::cin
。
還有其他技術將數字的文本表示轉換爲內部表示。這些留給讀者去研究。
謝謝你,因爲我想:) –
其實,我會不同意你的開頭句子。我認爲'getline()'對於面向行的輸入是更可取的,因爲我相信這是在這裏。直接使用流提取到整數幾乎沒有機會進行驗證,並且有很多機會出現意外行爲。 –
循環通常適合重複使用。 –
好的,但如何循環多少用戶號碼輸入? –
研究['std :: stoi'](http://en.cppreference.com/w/cpp/string/basic_string/stol)和['for'循環](http://en.cppreference.com/W/CPP /語言/對)。 –