在静态const成员数组中输入char to string

时间:2014-09-13 01:54:26

标签: c++ arrays string casting

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

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

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

自从我编程以来已经好几年了,如果我说错了,我会对我的词汇量使用不好表示歉意。

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:'初始化':无法从'char'转换为'const std :: string'         没有构造函数可以采用源类型,或构造函数重载决策是模糊的

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

我想你想要这个:

const string Card::suitName[] = {"\03", "\04", "\05", "\06"};

但我不确定这是一个好主意,因为您尝试使用的这些ASCII代码不是可打印的字符,那么当您将它们打印到屏幕时它是如何工作的呢?