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

How do I assign a string to an int variable?

我正在制作一个 Card and Deck 程序,我对如何在构造函数中实现一个功能以使 Card Rank 等于 "Ace" "Jack" [=15= 感到有点困惑] "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
    }
}

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

您可能不想在构造函数中这样做。相反,您可以在排名值等于特定数字时更改 ostream 的输出。例如:

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

您可以尝试使用枚举。这不是字面上的字符串,而是一组保证不共享值的常量整数。

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;