C++中如何去除for循环输出结果末尾的多余空格
C++ 循环输出避免末尾多余空格的实现方案
原有代码的问题是统一在每个输出值后面追加空格,10个输出值会对应打印10个空格,最后一个值后面的空格就成了多余内容。核心解决思路是把空格作为两个值之间的分隔符,而非每个值的后缀,下面是两种常用的靠谱实现:
方案一:首元素单独输出,后续元素前补空格
这个方案不需要做循环边界判断,兼容性强,不管是固定次数循环还是遍历动态长度的容器都适用,几乎不会出逻辑错误:
int n; cin >> n; cin.ignore(); // 先输出第一个值,前面不需要空格 cout << 1 * n; // 从第二个值开始,每个值输出前先打印分隔空格 for(int i = 2; i < 11; i++){ cout << " " << i * n; }
运行后输出效果和预期完全一致:n取1时输出1 2 3 4 5 6 7 8 9 10,末尾无多余空格。
方案二:循环内判断是否为最后一次迭代
如果不想拆分首元素的输出逻辑,可以在每次输出值后判断当前是不是最后一轮循环,只有非最后一轮才打印空格:
int n; cin >> n; cin.ignore(); for(int i = 1; i < 11; i++){ cout << i * n; // 非最后一次循环时才输出分隔空格 if (i < 10) { cout << " "; } }
小提示:如果是遍历长度动态变化的序列(比如标准库容器、输入生成的不定长序列),优先选方案一,不需要额外记录序列总长度,写起来更简洁也不容易出边界bug。
内容的提问来源于stack exchange,提问作者Hiranmay Mandal
相关产品推荐
相关产品推荐

