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

C++如何逆序输出用户输入内容 及现有代码错误排查修复方案

存在的错误

  • 输入逻辑顺序完全错位:输出姓名询问提示后没有读取用户输入的姓名,直接输出了文件名询问提示,导致第一次getline读取的内容被错误存到了文件名变量里,第二次读取的内容才对应姓名,和需求的输入顺序完全不符
  • 缺少文件写入功能:当前代码仅把内容打印到控制台,没有创建指定名称的.cpp文件,也没有写入要求的代码内容
  • 没有自动补全扩展名:没有给输入的文件名拼接.cpp后缀,不符合优先展示带扩展名的要求
  • 提示文本不符合要求:第二个询问提示拼写错误,也和需求要求的提示内容不一致

正确实现代码

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() {
    string userName, fileName;
    // 读取姓名
    cout << "What's your name? ";
    getline(cin, userName);
    // 读取输出文件名
    cout << "What's the name of the output file? ";
    getline(cin, fileName);
    // 拼接cpp扩展名
    string fullFileName = fileName + ".cpp";
    // 创建并写入cpp文件
    ofstream outFile(fullFileName);
    if (outFile.is_open()) {
        outFile << "#include <iostream>\n\n";
        outFile << "int main() {\n";
        outFile << "   std::cout << \"Hello " << userName << "!\\n\";\n";
        outFile << "}\n";
        outFile.close();
        // 按要求优先输出带扩展名的文件名,再输出姓名
        cout << "生成文件:" << fullFileName << endl;
        cout << "输入姓名:" << userName << endl;
    } else {
        cout << "文件创建失败" << endl;
    }
    return 0;
}

实现说明

  1. 先引入文件操作需要的<fstream>头文件,用于生成.cpp文件
  2. 严格按照需求顺序先询问、读取姓名,再询问、读取文件名
  3. 自动给输入的文件名拼接.cpp后缀,满足优先展示带扩展名的要求
  4. getline本身支持读取包含负号、空格在内的任意输入内容,满足可接受负值输入的要求
  5. 写入完成后按要求先输出带扩展名的文件名,再输出输入的姓名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 08:15:03