You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写从标准输入读取内容并每行仅输出6个字符的C++程序?

完善你的C++程序实现需求

你的现有代码有几个关键问题没处理:substr调用没起实际作用、没有分割字符串的逻辑、也没实现编号输出的功能。我帮你调整并完善代码,完全符合你要的效果:

完善后的代码

#include <iostream>
#include <string>

using namespace std;

int main() {
    string inputLine;
    int lineCount = 1;  // 记录当前处理的输入行编号
    
    // 逐行读取标准输入
    while (getline(cin, inputLine)) {
        // 循环拆分当前行,每6个字符为一段
        for (size_t pos = 0; pos < inputLine.size(); pos += 6) {
            // 截取从pos开始的最多6个字符(不足6个就取剩下的所有)
            string segment = inputLine.substr(pos, 6);
            // 按要求格式输出
            cout << lineCount << ":" << segment << endl;
        }
        lineCount++;  // 处理完一行,编号递增
    }
    
    return 0;
}

代码说明

  1. 编号逻辑:用lineCount变量记录当前输入的行号,同一行拆分出的所有片段都会带相同的编号,处理完一行后编号自动递增,和你给出的示例格式完全匹配。
  2. 字符串拆分:通过步长为6的for循环,每次从当前位置截取最多6个字符的子串;如果行尾剩余字符不足6个,substr会自动取到字符串末尾,不会出现越界问题。
  3. 输入读取:用getline逐行读取输入,能正确处理包含空格的整行内容,符合你输入长文本的场景。

测试示例

假设你输入两行内容:

My name is Alex and
I also love coding

程序会输出:

1:My nam
1:e is A
1:lex an
1:d 
2:I also
2: love 
2:coding

完全匹配你预期的输出效果。

内容的提问来源于stack exchange,提问作者user17034572

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 15:07:50