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
相关产品推荐
相关产品推荐

