C++向量输入程序需输入逗号才终止的问题及修复方法
问题描述
我正在编写一个程序,用于让用户向vector中输入数字并在控制台显示这些数字。目前每次输入数字后,程序都不会停止运行,除非输入逗号。请问该如何修复?
以下是我的代码:
#include <iostream> #include <vector> using namespace std; int main() { int series_of_numbers; vector<int> seriesVector; cout << "Enter a series of numbers ending with 0, separated by space." << endl; while (cin >> series_of_numbers) { seriesVector.push_back(series_of_numbers); } for (int i = 0; i < seriesVector.size(); ++i) { cout << seriesVector[i] << " "; } return 0; }
控制台输入数字后程序不会终止,只有输入逗号这类非数字字符才会停止。
解决方案
你这段代码的问题出在循环条件上:while (cin >> series_of_numbers) 会持续读取输入,直到遇到无法转换为整数的内容才终止,但你提示用户的是“输入以0结束”,所以需要调整循环逻辑,让程序在读取到0时停止。
根据是否需要把终止用的0存入vector,有两种修改方式:
方式一:不保存终止用的0(更符合提示语义)
#include <iostream> #include <vector> using namespace std; int main() { int series_of_numbers; vector<int> seriesVector; cout << "Enter a series of numbers ending with 0, separated by space." << endl; while (cin >> series_of_numbers) { if (series_of_numbers == 0) { break; // 读取到0,立即终止循环 } seriesVector.push_back(series_of_numbers); } // 用范围for循环遍历输出,代码更简洁 for (int num : seriesVector) { cout << num << " "; } return 0; }
方式二:保存终止用的0
如果需要把结束标记0也存入vector,只需要调整判断和添加元素的顺序:
#include <iostream> #include <vector> using namespace std; int main() { int series_of_numbers; vector<int> seriesVector; cout << "Enter a series of numbers ending with 0, separated by space." << endl; while (cin >> series_of_numbers) { seriesVector.push_back(series_of_numbers); if (series_of_numbers == 0) { break; } } for (int num : seriesVector) { cout << num << " "; } return 0; }
修改后,用户输入数字序列后输入0,程序就会终止并输出之前输入的数字,无需再输入逗号。
内容的提问来源于stack exchange,提问作者Lalo
相关产品推荐
相关产品推荐

