如何像这个方法一样重复std :: getline()作为用户数输入:
std::string num;
std::cout << "How many subjects you want to sum: ";
std::getline (std::cin,num);
然后输入用户编号并多次重复std :: getline()作为输入,将用户在第一个问题后输入的所有主题标记相加。
答案 0 :(得分:1)
不希望使用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
。
还有其他技术可以将数字的文本表示转换为内部表示。这些留待读者研究。