C++从vector打印数字时缺失首个输入整数的问题排查
问题根因
你在进入while循环前已经执行了一次cin >> input读取了用户输入的第一个整数,但是没有将该值存入vector,就直接进入循环逻辑。循环的判断条件会再执行一次cin >> input,直接覆盖了第一次读取的数值,所以第一个输入的整数永远不会被存入容器,自然不会被打印输出。
修复方案
推荐使用第一种更简洁的方案:
- 方案1:删除进入循环前多余的首次
cin >> input语句,直接由循环条件执行输入读取判断
int main() { vector<int> numbers; int input; cout << "Please type your numbers" << endl; // 移除了多余的首次输入读取代码 while ((cin >> input) && input != 0) numbers.push_back(input); print_numbers(numbers); return 0; }
- 方案2:保留首次输入读取逻辑,提前判断存入vector后再进入循环
int main() { vector<int> numbers; int input; cout << "Please type your numbers" << endl; cin >> input; // 首次读取的数值非0就先存入容器 if (input != 0) { numbers.push_back(input); while ((cin >> input) && input != 0) numbers.push_back(input); } print_numbers(numbers); return 0; }
可选优化建议
你当前的print_numbers函数在打印完所有数值后没有输出换行符,输出格式会不规范,可以在for循环结束后补充cout << endl;语句优化显示效果。
内容的提问来源于stack exchange,提问作者user16003119
相关产品推荐
相关产品推荐

