如何将字符串分配给int变量?

时间:2018-04-28 02:27:11

标签: c++ converter

我正在制作一个Card and Deck程序,我对如何在构造函数中实现一个功能使卡等级等于“Ace”“Jack”“King”“Queen”等等有点困惑。数字。

Card::Card(char suiter, int ranker) {
    suit = suiter;
    rank = ranker;
    if (rank == 1) {
        rank = "Ace";   //Assign rank to "Ace" if the number equals 1
    }
}

3 个答案:

答案 0 :(得分:1)

您可以尝试使用枚举。这不是一个字符串,而是一组常量int,保证不共享值。

enum CardRank
{
  Ace,
  Two,
... ... ...
  Jack,
  Queen,
  King
};

这会创建一个新类型CardRank,您只能在代码中使用卡片排名。您只需将rank成员设为CardRank类型,即可按名称引用其值。

在大多数意图和目的下,这是一个无符号整数,只能接受Ace(0)到King之间的值(12)

鉴于我没有看到你试图将这个字符串写入屏幕,这可能是要走的路。即使你 计划将这个字符串写出来,你仍然可能想要使用这个枚举,并且只需要在需要用这样的查找来编写字符串时拉出字符串:

std::string RankNames[] =
{
  "Ace",
  "2",
... ... ... ...
  "Jack",
  "Queen",
  "King"
};

CardRank rank = Ace;

std::cout << RankNames[rank] << std::endl;

答案 1 :(得分:0)

你不能使用rank作为i int和next作为i string类型。如果你想创建类似的东西,尝试使用字符串类型进行排名。 豪

答案 2 :(得分:0)

您可能不想在构造函数中执行此操作。相反,当等级值等于特定数字时,您可以更改ostream的输出。例如:

ostream & operator<<(ostream &out, const Card &rhs) {   
    if (rhs.rank == 1) {
                out << "Ace of ";
    }
   }