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

C++类使用问题与char类型变量打印仅显示首字符故障求助

问题修复方案

核心错误原因

  • 数据类型选择错误:char 类型仅能存储单个ASCII字符,你要存储B1、W2这类包含2个字符的内容,应该使用const char*或者std::string类型
  • 指针使用错误:*"B1"的语义是取字符串字面量首地址指向的第一个字符,等价于只取了'B',自然只能输出单个字符
  • 输出语法错误:注释里的cout << " 1 ", P1, " ", P2...用了逗号运算符,不会完成链式输出,应该统一用<<运算符连接输出内容

修正后的完整代码

#include <iostream>
using namespace std;

class Pieces
{
    public:
        // 把char改为const char*存储字符串
        const char* P1;
        const char* P2;
        const char* P3;
        const char* P4;
        const char* P5;
        const char* P6;
        const char* P7;
        const char* P8;
        const char* P9;
        void Board(const char* P1, const char* P2, const char* P3, const char* P4, const char* P5, const char* P6, const char* P7, const char* P8, const char* P9);
        void Board();
        
};

void Pieces::Board()
{
    cout << "    A   B   C \n";
    cout << " 1  B1  B2  B3\n";
    cout << " 2  .   .   . \n";
    cout << " 3  W1  W2  W3\n";
}

void Pieces::Board(const char* P1, const char* P2, const char* P3, const char* P4, const char* P5, const char* P6, const char* P7, const char* P8, const char* P9)
{
    cout << "    A   B   C \n";
    // 修正输出运算符为<<
    cout << " 1  " << P1 << "  " << P2 << "  " << P3 << "\n";
    cout << " 2  " << P4 << "  " << P5 << "  " << P6 << "\n";
    cout << " 3  " << P7 << "  " << P8 << "  " << P9 << "\n";
}

int main()
{
    Pieces IDK;
    // 直接赋值字符串字面量,不需要加*取首字符
    IDK.P1 = "B1";
    IDK.P2 = "B2";
    IDK.P3 = "B3";
    IDK.P4 = ". ";
    IDK.P5 = ". ";
    IDK.P6 = ". ";
    IDK.P7 = "W1";
    IDK.P8 = "W2";
    IDK.P9 = "W3";

    cout << IDK.P1 << endl;

    IDK.Board();
    IDK.Board(IDK.P1, IDK.P2, IDK.P3, IDK.P4, IDK.P5, IDK.P6, IDK.P7, IDK.P8, IDK.P9);
    return 0;
}

补充说明

如果后续需要修改存储的字符串内容,可以把成员变量类型换成std::string,使用更安全,不需要手动管理内存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:42:03