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

C++中如何接收空输入并使用构造函数默认值

解决C++采购申请程序的空输入与默认值问题

问题分析

你的代码中cin>>会跳过所有空白字符(空格、回车、制表符),导致无法捕获空输入;同时只要执行cin>>purchaser或cin>>vendor,就会覆盖默认构造函数设置的初始值,无法保留默认值。以下是针对性的解决方案:

修改后的完整代码

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

class Requisition{
    private:
        string purchaser, vendor;

        // 辅助函数:判断字符串是否全为空白字符
        static bool isAllWhitespace(const string& s) {
            for (char c : s) {
                if (!isspace(static_cast<unsigned char>(c))) {
                    return false;
                }
            }
            return true;
        }
    
    public:
        Requisition()
        :purchaser("ABC Industries"),vendor("XYZ Supplier"){}

        Requisition(string pname, string vname)
        :purchaser(pname),vendor(vname){}

        void getStaffInput(){
            string input;

            cout << "Enter a purchaser name (press Enter to use default): ";
            getline(cin, input);
            // 仅当输入非空白时,更新采购商名称
            if (!isAllWhitespace(input)) {
                purchaser = input;
            }

            cout << "Enter a vendor name (press Enter to use default): ";
            getline(cin, input);
            // 仅当输入非空白时,更新供应商名称
            if (!isAllWhitespace(input)) {
                vendor = input;
            }
        }

        void printHeader(){
            cout << "\n********************************************************\nPurchaser: "
                 << purchaser <<"\nVendor: "<<vendor
                 <<"\n********************************************************"<<endl;
        }
};

int main(){
    Requisition req;
    req.getStaffInput();
    req.printHeader();
    return 0;
}

关键修改说明

  1. 接收空输入的处理

    • 用getline(cin, input)替代cin>>:getline会读取用户输入的整行内容,包括直接回车产生的空字符串,完美解决无法捕获空输入的问题。
  2. 保留默认值的逻辑

    • 新增isAllWhitespace辅助函数,判断输入是否为空或全是空格、制表符等空白字符。
    • 只有当输入包含非空白字符时,才更新purchaser或vendor成员变量;如果用户直接回车或输入全空格,就保留默认构造函数设置的初始值。

测试场景验证

  • 直接回车采购商输入:打印时采购商显示默认值"ABC Industries"
  • 输入全空格的供应商名称:打印时供应商显示默认值"XYZ Supplier"
  • 输入有效名称:打印时显示用户输入的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:35:18