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

C++类程序运行异常:输入角色长度后程序直接终止的问题排查

问题分析与修复方案

嘿,我来帮你捋捋代码里的问题,这几个小细节导致了程序没按你预期运行:

1. 变量类型不匹配

你定义了int charNAME来存储角色名字,但名字是字符串类型,用int的话程序会把输入的内容当成整数处理,这肯定不对,应该改成string charNAME。

2. 多余的对象创建

你创建了char1 name和char1 length两个对象,但你的char1类本身就包含charName和charLength两个成员变量,完全可以用同一个对象来存储这两个属性,没必要分开创建。

3. 没调用打印方法

你写了printName()方法,但程序里从来没调用它!输入完数据后程序就直接执行到return 0结束了,自然看不到任何输出。


修正后的完整代码

#include <iostream>
#include <string>  // 注意:要使用string类型需要显式包含这个头文件哦
using namespace std;

class char1 {
public:
    string charName;
    float charLength;
    void printName() {
        cout << "char name is: " << charName << endl;  // 加个空格和换行,输出更清晰
    }
    // 额外加个打印完整信息的方法,方便查看所有输入内容
    void printAllInfo() {
        cout << "char name is: " << charName << endl;
        cout << "char length is: " << charLength << endl;
    }
};

int main() {
    string charNAME;  // 改成string类型适配名字输入
    float charLENGTH;

    cout << "write your char's name" << endl;
    cin >> charNAME;
    cout << "write your char's length" << endl;
    cin >> charLENGTH;

    char1 myCharacter;  // 只需要一个对象就能存所有属性
    myCharacter.charName = charNAME;
    myCharacter.charLength = charLENGTH;

    myCharacter.printName();       // 调用打印名字的方法
    myCharacter.printAllInfo();    // 调用打印完整信息的方法

    return 0;
}

另外补充个小细节:原来的代码没包含<string>头文件,虽然部分编译器会通过iostream间接引入,但显式加上能保证代码在更多环境下正常运行。

内容的提问来源于stack exchange,提问作者Umut Kaya Bal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 08:47:40