在静态const成员数组中键入将char强制转换为字符串的类型

type casting char to string in static const member array

本文关键字:转换 字符串 类型 char 成员 const 静态 数组      更新时间:2023-10-16

对于c++,使用visual studio命令提示符(2010)作为编译器,使用notepad++作为编辑器

我遇到了一个特定的问题,我似乎在搜索中找不到我想要的答案,所以这里是:

关于有一些约束的程序分配(我不能使用不同的变量)
我有一个类Card,在我的不可接触头文件中有一个名为"faceName"的静态常量成员数组
我正在用赋值运算符和字符串文字列表初始化实现文件中的这个成员数组
我想用字符ascii代码3、4、5和6来表示实际的符号,而不是用无聊的文字"黑桃"answers"红心"等来表示套装名称
我不知道如何将我的char变量类型转换成字符串可以读取的内容,然后在一行中将它们加载到字符串中(因为常量以后不能修改,而且我实际上不能在main中创建char,必须在实现文件中松散地浮动。

我编程已经好几年了,如果我说错了什么,我很抱歉我的词汇使用不好

Card.h

class Card
{
    private:
        int face;
        int suit;
        static const int NUM_OF_SUITS = 4;
        static const int FACES_PER_SUIT = 13;
        static const string suitName[NUM_OF_SUITS];
        static const string faceName[FACES_PER_SUIT];
    public:
        string toString() const;
}


Card.cpp

const string Card::faceName[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"}
const string Card::suitName[] = {(char)3, (char)4, (char)5, (char)6}
string Card::toString() const
{
    string nameOfCard;
    if (suit >= 0 && suit <= NUM_OF_SUITS && face >= 0 && face <= FACES_PER_SUIT)
    {
        nameOfCard = faceName[face] + " of " + suitName[suit];
    }
    else nameOfCard = "Error, card type doesn't exist.";
    return nameOfCard;
}


和我的错误:card.cpp(14):错误C2440:"initializing":无法从"char"转换为"const std::string"没有构造函数可以采用源类型,或者构造函数重载解析不明确

我不能简单地创建一个sstream来进行转换,因为我在哪里可以这样做?总之,太晚了,我需要初始化实现文件中的成员数组。

谢谢你的帮助!

我想你想要这个:

const string Card::suitName[] = {"3", "4", "5", "6"};

但我不确定这是个好主意,因为你试图使用的这些ASCII码不是可打印的字符,所以当你将它们打印到屏幕上时,它将如何工作?