c++ - 在静态常量成员数组中将 char 类型转换为字符串

标签 c++ arrays string casting

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

我遇到了一个如此具体的问题,我似乎无法在搜索中找到我正在寻找的答案,所以这里是:

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

自从我编程以来已经有好几年了,如果我说错了什么,请原谅我糟糕的词汇使用。

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;
}


卡片.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 来进行转换,因为我该在哪里做呢?在 main - 太晚了,我需要在实现文件中初始化成员数组。

感谢您的帮助!

最佳答案

我猜你想要这个:

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

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

关于c++ - 在静态常量成员数组中将 char 类型转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25819098/

相关文章:

c++ - 在不知道类型的情况下将数组清除为 NULL

c++ - 尝试打开 COM 端口 C++ 时出现 FILE_NOT_FOUND

c++ - 如果我让类(class)成员公开怎么办?

javascript - v-for 循环项目不会立即在 Vue 中更新

swift - 如何在 Swift 中的英镑符号字符串中应用空格?

java - 将运算符和操作数输入到两个不同的堆栈中

c++ - 什么时候删除模板实例比删除非模板重载更可取?

C - 查找字符数组中出现频率最高的元素

jquery - 将 json 数组传递给 jquery

Oracle 翻译的 Java 等效项