【问题标题】:Unable to cout char无法计算字符
【发布时间】:2016-12-23 09:51:44
【问题描述】:

我无法理解这里的问题,所以我希望有人能帮忙 我有这样的程序开始 int main():

    Board br;
    GetNames();
    br.PresentPlayer();

    system("PAUSE");
    return 0;

GetNames() 看起来像这样:

char p[100];
char p2[100];
Board br;
cout << "Please Enter Player 1's Name:";
cin >> _player_name_1;
cout << "Please Enter " << _player_name_1 << "'s Symbol(Make sure its 1 characters long):";
cin >> p;
cout << "Please Enter Player 2's Name:";
cin >> _player_name_2;
cout << "Please Enter " << _player_name_2 << "'s Symbol(Make sure its 1 characters long):";
cin >> p2;
br.SetSymbols(p[0], p2[0]);

Board::SetSymbols(char p,char p2) 看起来像这样:

void Board::SetSymbols(char p1,char p2)
{
_player_char_1 = p1;
_player_char_2 = p2;
_current_player = _player_char_1;
cout << _current_player << endl;
}

变量在 Board.h 中:

char _player_char_1;
char _player_char_2;
char _current_player;

最后是 PresentPlayer():

void Board::PresentPlayer()
{
cout << _current_player << endl;

}

所以当 SetSymbols 被执行时,它会正确打印出 _player_char_1 但是,当 PresentPlayer 被执行时,它会打印出你会执行此操作的那些符号 alt+numlock 数字

为什么会这样??

【问题讨论】:

  • 为什么Board::SetSymbols有两次?
  • 什么是PresentPlayer
  • 您有两份 Board br。您在一个中设置数据,然后在另一个中打印值。
  • main() 中的brGetNames 中的br 不同。
  • 我已将 PresentPlayer 添加到我的问题中

标签: c++ arrays char cout cin


【解决方案1】:
char _player_char_1;
char _player_char_2;
char _current_player;

应该是

char *_player_char_1;
char *_player_char_2;
char *_current_player;

或者,由于您使用的是 C++,stop 使用 char*(您没有为它们分配内存或检查边界),而是使用 std::string

void Board::SetSymbols(char p1,char p2)

需要

void Board::SetSymbols(char *p1,char *p2)

甚至更好

void Board::SetSymbols(std::string &p1, std::string &p2)

【讨论】:

  • 如果不是std::string,那么至少为玩家使用char[]而不是char*,并确保使用std::setw以避免cin &gt;&gt;的缓冲区溢出。
  • “你没有为他们分配内存”是什么意思?
  • 这如何回答这个问题?
  • 指针需要指向某个东西。我越看这段代码,我的头就越痛。我以为你将它指向分配的数组,但显然不是。
  • 为什么_player_char_1 应该是std::string 而不是char
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 2016-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多