如何编写从标准输入读取内容并每行仅输出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; }
代码说明
- 编号逻辑:用
lineCount变量记录当前输入的行号,同一行拆分出的所有片段都会带相同的编号,处理完一行后编号自动递增,和你给出的示例格式完全匹配。 - 字符串拆分:通过步长为6的for循环,每次从当前位置截取最多6个字符的子串;如果行尾剩余字符不足6个,
substr会自动取到字符串末尾,不会出现越界问题。 - 输入读取:用
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
相关产品推荐
相关产品推荐

